[root@localhost ~]# uptime 16:12:37 up 5:35, 2 users, load average: 0.00, 0.01, 0.05 16:12:37 up 5:35, 2 users, load average: 0.00, 0.01, 0.05 系统时间 启动后运行时间 用户登录个数 平均队列长度(平均负载):1min、5min、15mintop - 16:15:10 up 5:38, 2 users, load average: 0.00, 0.01, 0.05Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie# 进程总数 正在运行进程数 睡眠的进程数 停止的进程数 僵尸进程数%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 995924 total, 495296 free, 107040 used, 393588 buff/cache #物理空间使用情况 总 空闲 已用 缓存/缓冲KiB Swap: 307196 total, 307196 free, 0 used. 689064 avail Mem #虚拟空间使用情况 总 空闲 已用 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17393 root 20 0 162004 2236 1564 R 0.3 0.2 0:00.01 top 1 root 20 0 193556 6516 4136 S 0.0 0.7 0:01.92 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd %CPU us 系统用户所占百分比 sy 内核所占百分比 ni 改变过优先级进程所占百分比 id 空闲CPU百分比 wa 等待I/O完成的时间总量 hi 硬中断所占百分比 si 软中断所占百分比 st (steal)偷:虚拟机偷物理内存所占百分比 物理机运行KVM、XEM虚拟机,KVM虚拟机占用物理机所占百分比PR 内核所调整的优先级(用户不能修改)NI 用户所调整的优先级(用户能修改)VIRT ps中的VSZ,申请的内存RES ps中的RSS,实际使用的内存SHR 共享内存大小(kb)(函数库)s 进程状态%CPU CPU所占百分比%MEM 物理空间所占百分比TIME+ 进程使用CPU的时间总计(单位 1/100秒)CMD 执行的命令 默认3s刷新一次,s修改刷新时间 空格 立即刷新 q 退出 P 按CPU排序 M 按物理内存排序 T 按时间排序 top -p PID #指定PID查看进程 top -u 用户 #指定用户查看进程 top U 用户 #指定用户查看进程 数字1 显示每个内核CPU使用率注意:CPU总占用可超过100%,需要结合CPU数量来计算
$ lsof # 查看进程和目录的关系,将文件和进程联系 lsof [选项] -p PID #指定PID查看 -i :端口 #指定端口查看练习: 终端1: vim yq.txt 终端2: ps aux | grep yq.txt |grep -v grep #找到yq.txt的PID[root@localhost ~]# ps aux |grep yq.txt|grep -v greproot 17520 0.1 0.5 151568 5100 pts/0 S+ 16:43 0:00 vim yq.txt ## 通过上诉PID查看[root@localhost ~]# lsof -p 17520COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEvim 17520 root cwd DIR 8,3 184 33574977 /rootvim 17520 root rtd DIR 8,3 224 64 /vim 17520 root txt REG 8,3 2294208 50771387 /usr/bin/vimvim 17520 root mem REG 8,3 61624 249276 /usr/lib64/libnss_files-2.17.sovim 17520 root mem REG 8,3 106075056 258004 /usr/lib/locale/locale-archive ## 查看22端口[root@localhost ~]# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 6434 root 3u IPv4 35246 0t0 TCP *:ssh (LISTEN)sshd 6434 root 4u IPv6 35257 0t0 TCP *:ssh (LISTEN)sshd 6702 root 3u IPv4 36587 0t0 TCP localhost.localdomain:ssh->192.168.18.1:10382 (ESTABLISHED)sshd 6769 root 3u IPv4 37590 0t0 TCP localhost.localdomain:ssh->192.168.18.1:10681 (ESTABLISHED)sshd 17484 root 3u IPv4 79566 0t0 TCP localhost.localdomain:ssh->192.168.18.1:8799 (ESTABLISHED)sshd 17488 yq1 3u IPv4 79566 0t0 TCP localhost.localdomain:ssh->192.168.18.1:8799 (ESTABLISHED)查看套接字,将套接字与进程联系
套接字文件:存储ip和端口的结合
ss [选项] -a #显示监听和建立连接的套接字 -t #输出TCP套接字 -u #输出UDP套接字 -n #以端口号显示(默认显示服务名称) -p #显示使用套接字的进程[root@localhost ~]# ss -anptState Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* users:(("sshd",pid=6434,fd=3))LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=6585,fd=13))ESTAB 0 0 192.168.18.134:22 192.168.18.1:10681 users:(("sshd",pid=6769,fd=3))ESTAB 0 0 192.168.18.134:22 192.168.18.1:10382 users:(("sshd",pid=6702,fd=3))ESTAB 0 0 192.168.18.134:22 192.168.18.1:8799 users:(("sshd",pid=17488,fd=3),("sshd",pid=17484,fd=3))LISTEN 0 128 :::22 :::* users:(("sshd",pid=6434,fd=4))LISTEN 0 100 ::1:25 :::* users:(("master",pid=6585,fd=14))注意: fd:文件描述符 内核用于管理已被打开的文件创建索引,用来指向被打开的文件 前台进程:命令执行中持续占用前台 后台进程: 命令 & #将命令执行放入后台 依赖终端:进程的控制终端 后台运行并脱离终端:守护进程(Daemon) 单次将命令放入后台运行,并脱离终端 格式: nohup 命令 & 练:ping ip 实现脱离终端放入后台运行[root@localhost ~]# nohup ping 127.0.0.1 &[1] 18628[root@localhost ~]# nohup: 忽略输入并把输出追加到"nohup.out"ctrl + z #暂停挂起作业jobs #查看已经挂起的作业[root@localhost ~]# jobs[1]+ 已停止 vim yq.txt#fg 数字 #继续作业#bg 数字 #后台暂停的作业,继续后台执行1)kill -l #列出所有支持的信号
[root@localhost ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+338) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX kill -2 pid #sigint信号,键盘终端 ctrl+c
终端1:
[root@localhost ~]# ping 127.0.0.1PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.019 ms64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.023 ms64 bytes from 127.0.0.1: icmp_seq=45 ttl=64 time=0.021 ms--- 127.0.0.1 ping statistics ---45 packets transmitted, 45 received, 0% packet loss, time 44002msrtt min/avg/max/mdev = 0.018/0.026/0.068/0.012 ms终端2:
[root@localhost ~]# ps aux|grep ping |grep -v greproot 17715 0.0 0.1 128440 1272 pts/0 S+ 17:44 0:00 ping 127.0.0.1[root@localhost ~]# kill -2 17715kill -9 PID #sigkill信号 强制终止
#终端1[root@localhost ~]# ping 127.0.0.1PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.029 ms64 bytes from 127.0.0.1: icmp_seq=16 ttl=64 time=0.021 ms64 bytes from 127.0.0.1: icmp_seq=17 ttl=64 time=0.022 ms64 bytes from 127.0.0.1: icmp_seq=18 ttl=64 time=0.022 ms64 bytes from 127.0.0.1: icmp_seq=19 ttl=64 time=0.023 ms已杀死#终端2[root@localhost ~]# ps aux |grep ping |grep -v greproot 17859 0.0 0.1 128440 1272 pts/0 S+ 17:54 0:00 ping 127.0.0.1[root@localhost ~]# kill -9 17859kill -15 PID #sigterm信号 终止(正常结束)缺省信号
#终端1[root@localhost ~]# ping 127.0.0.1PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.022 ms64 bytes from 127.0.0.1: icmp_seq=18 ttl=64 time=0.024 ms64 bytes from 127.0.0.1: icmp_seq=19 ttl=64 time=0.022 ms64 bytes from 127.0.0.1: icmp_seq=20 ttl=64 time=0.023 ms已终止#终端2[root@localhost ~]# ps aux |grep ping |grep -v greproot 17863 0.0 0.1 128440 1268 pts/0 S+ 17:55 0:00 ping 127.0.0.1[root@localhost ~]# kill -15 178632) killall 名称
killall -i 名称 #交互式逐一确认杀死
[root@localhost ~]# killall -i sshd杀死 sshd(17810) ? (y/N) n杀死 sshd(17811) ? (y/N) n3) pkill 命令
pkill -9 -t 终端号 #按照终端号踢出用户
#终端1执行踢出命令[root@localhost ~]# pkill -9 -t pts/#终端2执行w查看,并在终端1执行踢出后再查看[root@localhost ~]# w |grep wroot pts/3 192.168.18.1 17:57 0.00s 0.03s 0.01s w[root@localhost ~]# Connection closed by foreign host.Disconnected from remote host(192.168.18.134:22) at 17:58:20.Type `help' to learn how to use Xshell prompt.[c:\~]$ 优先级取值范围(-20,19),数值越小,优先级越高,默认优先级是0nice -n [+-]数字 命令 #修改命令优先级(未在进程中的命令)#终端1 修改命令优先级[root@localhost ~]# nice -n 5 vim /root/yq.txt ~ ~#终端2 查看命令优先级修改效果[root@localhost ~]# ps aux | grep yq.txt |grep -v grep root 17989 0.0 0.5 151568 5252 pts/0 SN+ 18:08 0:00 vim /root/yq.txt[root@localhost ~]# top -p 17989top - 18:09:23 up 7:32, 4 users, load average: 0.00, 0.01, 0.05Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 995924 total, 476164 free, 113360 used, 406400 buff/cacheKiB Swap: 307196 total, 307196 free, 0 used. 681856 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17989 root 25 5 151568 5252 2732 S 0.0 0.5 0:00.02 vimrenice -n [+-]数字 PID #修改PID优先级(正在进程中的PID)
[root@localhost ~]# ps aux |grep yq.txt |grep -v greproot 17989 0.0 0.5 151568 5252 pts/0 SN+ 18:08 0:00 vim /root/yq.txt[root@localhost ~]# renice -n -15 1798917989 (进程 ID) 旧优先级为 5,新优先级为 -15[root@localhost ~]# top -p 17989top - 18:14:57 up 7:37, 4 users, load average: 0.00, 0.01, 0.05Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 995924 total, 475968 free, 113360 used, 406596 buff/cacheKiB Swap: 307196 total, 307196 free, 0 used. 681668 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17989 root 5 -15 151568 5252 2732 S 0.0 0.5 0:00.02 vim终端复用工具,可让bash脱离终端,可用于备份(需要yum安装)
## screen -S 名称 #创建自定义名称的脱离终端[root@localhost ~]# screen -S yq_out## screen -ls #查看[root@localhost ~]# screen -lsThere is a screen on: 18044.yq_out (Attached)1 Socket in /var/run/screen/S-root## screen -r 名称 #连接脱离终端[root@localhost ~]# screen -r yq_out## exit #退出当前练习:使用screen实现后台备份