3.其他

Linux输入输出重定向

1
2
3
4
5
6
7
8
输出重定向,将命令执行结果不输出到屏幕里,输出到文件里
echo 123 > 1.txt 将123输入到1.txt中,并会将1.txt原先的内容清空
echo 123 >> 1.txt 则不会将原先的内容清空

#标准正确输出重定向
#标准错误输出重定向
cat jaden.txt1 >a.txt 2>b.txt #指令正确会将数据保存到a.txt中
cat jade 1>a.txt 2>b.txt #jade文件不存在,报错信息会进入到b.txt中

Linux的压缩打包

tar

1
2
3
4
5
6
tar 解压xx.tar.gz的文件类型
tar -zcf 压缩包路径 目标 #压缩文件
tar -zcf num.tar.gz nikta.txt
tar -zxf 解压路径 #解压文件

tar -tf + 文件名 #查看压缩文件的内容(不会将压缩文件压缩)

image-20250316132434409

image-20250316133014366

gzip

1
2
3
gzip 解压xx.gz的文件类型
gzip + 文件名 #压缩文件,会自动删除原文件,和tar不同,tar会保留原文件
gzip -d + 文件名 #解压,会自动删除原压缩包

image-20250316133207467

image-20250316133449505

zip

1
2
3
zip 解压xx.zip文件
zip -r 1.zip num,txt #压缩文件,会保留原文件
uzip 1.zip #解压文件

image-20250316133731981image-20250316133449505

文件传输

image-20250316145111146

网络文件下载

1
2
3
curl -o 文件名 + 网址
ping 网址 #检查网络是否通畅
file + 文件名 #查看文件类型

image-20250316151500343

scp传输

1
scp + 文件名@ip地址 + 储存地址

image-20250316152128451

rz和sz

image-20250316154017210

软件安装

一、编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
1.下载源码包
cd /opt/
rm -fr
curl -o nginx.tar.gz http://nginx.org/download/nginx-1.20.1.tar.gz

2.编译安装
tar xf nginx.tar.gz
cd nginx-1.20.1/
[root@localhost nginx-1.20.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src

#1.配置编译参数
#这个软件给我们提供了很多功能,我们在编译的过程中可以自己选择哪些功能要,哪些功能不要,所有功能都要就是完整版,好多功能都不要就成了精简版,比如qq精简版,不知道大家听没听过。
./configure --prefix=/usr/local/nginx --without-pcre --without-http_rewrite_module --without-http_gzip_module
#禁掉了一些功能,有些功能都需要好多依赖包。--without就是去掉的意思。--prefix=/usr/local/nginx是指定软件的安装目录,目录不存在的话会自动创建,./是用相对路径来执行这个configure文件,用绝对路径也可以执行这个文件。这个指令执行之后,会自动检查各种依赖环境是否满足软件运行的要求,检查通过之后会生成一个叫做Makefile的文件。
[root@localhost nginx-1.20.1]# ls
auto CHANGES.ru configure html Makefile objs src
CHANGES conf contrib LICENSE man README

#多了两个文件Makefile和objs,刚才的指令主要是为了生成Makefile

#2.编译
make #make会找当前目录中的Makefile文件来进行编译,这个编译过程一般是比较长的。1、看CPU性能2、软件功能复杂度
[root@localhost nginx-1.20.1]# ls
auto CHANGES.ru configure html Makefile objs src
CHANGES conf contrib LICENSE man README
#编译之后看上去目录结构和之前一样,但是objs目录里面其实多了好多东西。
[root@localhost nginx-1.20.1]# ls objs/
autoconf.err nginx ngx_auto_config.h ngx_modules.c src
Makefile nginx.8 ngx_auto_headers.h ngx_modules.o
#其中nginx文件就是我们的二进制可执行的命令文件。它是可执行的程序了,比如我们查看一下它的版本
[root@1ocalhost nginx-1.20.1]#./objs/nginx-v
nginx version:nginx/1.20.1
#到这里只是编译完了,还需要安装,其实安装就是将这个程序的某些文件放到对应的目录中去。其实我们在上面的编译参数中已经指定好了--prefix=/usr/1ocal/nginx,要安装到/usr/1ocal/nginx目录中去
#3.安装
make install
#查看安装目录,这就是它这个软件安装的所有文件
[root@localhost nginx-1.20.1] #ls/usr/1ocal/nginx/
conf html logs sbin
#这样看目录结构看若不太清晰,我们可以安装一下tree这个工具,来进行目录查看
[root@localhost nginx-1.20.1] # yum install tree -y
#安装完tree之后,我们来看一下目录,看着就清晰多了,树状结构显示。
[root@localhost nginx-l.20.1] # tree /usr/local/nginx/
/usr/1ocal/nginx/
—conf #该软件的配置文件所在目录
3.运行
指令:/usr/local/nginx/sbin/nginx,没有配置环境变量,所以要用完整路径来运行
[root@1ocalhostnginx-1.20.1]# /usr/1ocal/nginx/sbin/nginx
[root@localhost nginx-1.20.1] #看上去没什么效果,但是已经运行了

#可以通过浏览器访问这个nginx了,访问之前要关闭一下防火墙。
#关闭防火墙
systemctl stop firewalld
#取消防火墙的开机自启
systemctl disable firewalld

#使用浏览器访问http://<虚拟机的ip地址>
http://192.168.61.132/就可以看到网站了。

二、rpm安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#编译还是比较琐的,为了方便使用者,一般都会编译之后发给使用者,用起来不需要编译,就方便多了。只要有人编译一次,将编译后的程序贡献出来,大家就可以用了。所以这些做系统的厂商也发现这样挺好,所以这些厂商干脆将自己的软件也打包一下,redhat、debian等都做了自己软件的打包工作,将自己的软件打包好之后,供用户下载使用。下载软件需要用到对应系统的包管理工具。

# redhat系打出来的包叫做:rpm包。用yum安装的程序包其实都是rmp包,比如刚才安装的tree。rpm的包我们也可以不使用yum而手动安装。
# debian系打出来的包叫做:deb包。
# rpm全称:redhat package manager包管理器

# 手动安装rpm包示例:不需要编译安装、也不用yum安装。
# 安装wget
yum install wget -y
#使用wget下载rpm包
wget https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/Packages/tree-1.6.0-10.e17.x86_64.rpm
#如果没有wget,可以先用curl下载:
curl-o wget.rpm https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/Packages/tree-1.6.0-10.e17.x86_64.rpm
#安装rpm包#rpm-i是安装,vh是显示安装进度条的意思。
rpm -ivh tree-1.6.0-10.e17.x86_64.rpm
#卸载
rpm -e tree
#升级
rpm -Uvh1 xxx.rpm
#查看已安装的软件
rpm -qa|grep httpd

三、yum安装

1
2
3
4
5
6
7
8
9
10
11
12
#自动解决rpm依赖
#yum安装扩展yum仓库
yum install epel-release -y
#yum安装nginx
yum install nginx -y
#yum移除nginx
yum remove nginx-y
#查看仓库rpm的数量
yum repolist


curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

查找文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#文件查找
例子1:普通查询(在name前加i表示不区分大小写查找 -iname)
find /etc maxdepth 1 -type f -name "pa*"
命令 目录... 查找深度 类型 文件名称包含
#-type文件类型:f表示文件,不指定类型的话,文件和目录都会查找
#-maxdepth查找深度:目录层级的意思,不指定的话,就按照最大深度来查找
“pa*”:*表示匹配任意pa开头的内容,*号还可以写在开头


例子2:按照文件大小查找(单位kMG,k要小写,MG要大写,不带单位就按照b单位来查找)(-表示小于,+表示大于)
1.查找大于100M的文件
find / -type f -size +100M
[root@localhost tmp]# find / -type f -size +100M
/proc/kcore
find:'/proc/1945/task/fdinfo/6':没有那个文件或目录#proc是进程目录,有些进程运行起来之后能看到文件信息,程序运行结束之后,进程文件也消失了,所以看到proc的报错很正常,并且proc的权限很高,不是一般人可以访问的,所以也经常会报权限不够等错误信息,所以以后看到proc的报错直接忽略即可。
find:‘/proc/1945/fdinfo/5’:没有那个文件或目录
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/var/cache/yum/x86_64/7/updates/gen/primary_db.sq1ite
/usr/1ib/locale/locale-archive

2.查找小于2k的文件
find /root/nginx-1.20.2 -type f -size -2k

3.查找大于50M同时小于100M的文件
find / -type f -size +50M -and -size -100M



例子3:
忽略大小写查询(大写和小写都查询)
find /etc -maxdepth 1 -iname "pa*" #i是ignore的简写,忽略的意思


例子4:
根据修改时间查找文件
[root@localhost~]# stat 1.txt
文件:"1.txt"
大小:0块:01O块:4096普通空文件
设备:801h/2049dInode:67108933硬链接:1
权限:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访间:2023-03-2309:04:35.339235371+0800 #Accesstime
最近更改:2023-03-2309:04:35.339235371+0800 #Modifytime
最近改动:2023-03-2309:04:35.339235371+0800 #Changetime
创建时间:-

时间参数:atime mtime ctime amin mmin cmin#(time是按照天来查找,min是按分钟查找)
#时间单位为天
find /opt -type f -mtime -1 (找到opt目录下,一天内修改过的文件)
#-1代表一天以内,+1一天以前

#时间单位为分钟
[root@localhost~]# find /root -type f -mmin -20 (20分钟以内)
/root/.bash_history
/root/ReadMe.txt
/root/.lesshst
#查找1天之前,10天之内,修改过的文件
[root@localhost~]# find /etc/ -type f- mtime +1 -and -mtime -10

例子5 取反!
例子:
[root@localhost~]#find /root -type -name ".txt" #找名称以.txt结尾的文件
/root/1.txt
/root/学习前准备.txt
[root@localhost~]#find /root -type f !-name "*.txt"#找名称中不是.txt结尼的文件
/root/.bash_1ogout
/root/.bash_profile
···
[root@localhost~]#mkdir jaden
[root@localhost ~]#mkdir wulaoban
[root@localhost~]#find /root -type f#找文件
/root/.bash_1ogout
/root/.bash_profile
···
[root@localhost~]#find /root !-type f#找文件夹
/root/jaden
/root/wulaoban

进程管理

一、查看和关闭进程

1
2
3
4
5
6
7
8
9
ps -ef # 查看进程

# pid:全称processid,是进程编号,每次启动某个程序,它的编号可能都不一样,这个是程序启动之后系统随机分配的。
# uid:全称userid,是进程所属用户,也就是哪个用户启动的,我们可以切换个用户执行一下sleep 60,就可以看到效果
# CMD中看到[]括起来的,表示这些都是系统级别的进程,比如一些硬件驱动程序之类的,这些都不要动。不带[]的都是用户级别的。
# ppid:全称parent process id,父进程,记录的是某个进程是由哪个进程创建出来的。可以通过pstree工具来查看从属关系。
# STIME:全称start time,进程的启动时间。
# TTY:用来显示哪些是本地启动的,哪些是远程终端连接上来启动的。通过w指令可以看到哪些终端登录着主机。只要登录成功一个终端,那就多一个终端。
# CMD:这个进程执行了什么指令。
1
2
3
4
5
kill + pid # 关闭进程
pkill + CMD命令名称 # 批量关闭进程
-------------------------------------------------------------------------------------------------------------------
# ki11 -9,这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。
#如果想把某个远程连接踢下线,可以杀掉显示pts的远程连接进程的父进程。

二、查看计算机硬件系统

1
2
3
lscpu  		# 查看CPU
free -h # 查看内存命令
df -h # 查看硬盘命令

image-20250319194206563

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看计算机的CPU、进程、内存等信息
top
------------------------------------------------------------------------------------------------------------------
# 19:41:40 up 2:35:表示19:41:40执行了top指令,开机了2小时35分钟,如果看到20min,表示开了20分钟,看到10days表示10天了,Linuk很稳定耐用,开机好多年都稳定运行着,不会卡顿。

# 3 user:表示当前有三个用户在使用

# load average:0.00,0.02,0.05:平均负荷,指的是CPU的负载高不高,CPU负载高,那么平均负荷就比较大,如果这几个值很大的时候,服务器会变得很卡。如果发现服务器卡了,就是异常情况,就可以看看这个数据。

# Tasks: 89 total,2running, 87 sleeping,0stopped, 0zombie:表示进程数量,总共89个,2个正在运行,87个在睡眠状态,当我们的cPU是1核的时候,是在所有进程之间来回切换执行,所以只有一个或者切换速度很快的时候显示2个。0stopped表示停止的进程,但是这里一般都是o,以为进程结束之后会自动从内存中释放。0zombie表示僵户进程数量,僵户进程是杀不死的,就是由于各种原因,系统无法自动释放的进程,僵尸进程也消耗系统资源,一般kill掉它的父进程可以杀掉户进程,或者kill -9来杀掉。但是kill -9要慎用!!!它也容易产生僵户进程,kill会将进程运行中的信息保存下来,进程不会出问题,kill -9不会保存,强制结束进程的运行,容易出现户进程。

# 按数字1,可以查看cpu数量

# %CPU(s):0.0us, 0.0sy, 0.0ni, 100.0id, 0.0wa, 0.0hi, 0.0si, 0.0st,关于cpu我们其他参数不用看,就看这个100.0id,id是id1e的简写,表示100%空闲,因为我们现在cPU使用率很低,所以显示了100%空闲,我们只关注这个参数即可,看一下CPU忙不忙就行。

#KiB Mem: 2027872 total, 1779000 free, 135668 used, 113204buff/cache,是内存(英文:memroy)的描述信息,total表示总内存量,free表示可用剩余量,userd表示已经使用的量,buff/cache表示用作缓存,是和磁盘进行读写时的缓存区域,这个参数不用管。

# KiB Swap: 0 total, 0 free, 0 used. 1755332 avai1 Mem:Swap表示拟内存,这是硬盘分配给内存的一部分空间,为了当内存不足时,临时将便盘当作内存使用。这个数值是可以自行调整的。一般自动就分配好了,所以我们不用管,实在是内存不够用的时候再加大这个虚拟内存。我现在看的是虚拟机上的虚拟内存,虚拟机不设置虚拟内存,所以显示为0。

定时任务

image-20250319200350144

image-20250319201541027

image-20250319202631521

image-20250319203103694

系统优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1.优化ssh,以防连接过慢
vi /etc/ssh/sshd_config # 改配置件之前,最好先做好备份,cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
79行: GSSAPIAuthentication no
115行:UseDNS no#别忘了删除前面的注释符号#
systemctl restart sshd

2.优化selinux
#修改配置文件,永久关闭
vi /etc/selinux/config
#第7行修改为
SELINUX=disabled
需要重启生效
#立即生效,临时的 #有时候有些服务器不让重启,就可以先这样临时用一下
setenforce 0

3.关闭firewalld
systemctl stop firewalld
systemctl disable firewalld

4.安装常用软件
yum install lrzsz vim tree wget net-tools screen tcpdump bash-completion -y
#net-tools:网络相关工具,比如ifconfig、ifconfig ens33(只看某个网卡的ip),rpm -qa是查看安装了哪些rpm包,具体这个软件有哪些命令,可以通过rpm -ql net-tools来查看。
#screen:屏工具。
#我们以后可能要远程连接某个服务器,比如服务器在国外,那么我们通过本地xshe11等远程连接到目标服务器,那么中间有要经过很多个网络设备的传输,很容易断掉连接,如果我们正在执行某个程序,突然断开连接了,那么我们执行的程序也会自动中断,如果我们不想让程序终端,就可以用到screen命令了。

image-20250319210931944

image-20250319212158150

1
rpm -qa|wc -l   #查看已经安装的软件包,看看是否是484个

服务管理

服务的操作:开机自启动、重启服务、启动服务、停止服务等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
安装服务
yum install httpd # 网站服务程序,类似于nginx,它叫做apache

# systemctl是centos7上专门管理服务的命令
查看所有服务列表
systemctl list-unit-files
启动服务
systemctl start httpd # start启动 或者 systemctl start httpd.service
# ps -ef|grep httpd,可以看到服务进程,表示启动了。

停止服务
systemctl stop httpd # stop停止
重启服务
systemctl restart httpd # restart重启,就是关闭再开启
查看服务状态
systemctl status httpd # 查看服务状态
把服务设置为开机启动
systemctl enable httpd.service
取消服务的开机自启
systemctl disable httpd.service