1、进程相关的命令
1.1、lsof命令
作用:显示当前进程的状态,类似于windows的任务管理器
语法:lsof + 选项
选项:
- -i:指定端口号;:8080
- -p:指定,指定端口;
- -a:显示所有用户的所有进程
- -x:显示没有控制终端的进程,同时显示各个命令的具体路径
#直接查看进程
[root@Node1 ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.2 0.1 125424 3756 ? Ss 10:17 0:01 /usr/lib/syste
root 2 0.0 0.0 0 0 ? S 10:17 0:00 [kthreadd]
..............
#查看进程
[root@Node1 ~]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 31356 ep_pol 10:17 ? 00:00:01 /us
1 S root 2 0 0 80 0 - 0 kthrea 10:17 ? 00:00:00 [kt
1.2、lsof恢复误删除文件
特殊用法:可以实现文件误删除的恢复
- 如果文件被删除了,删除之后没有进程在使用;使用工具、extundelete工具恢复,XFS系统工具恢复
- 文件被删除知道,还是进程再使用文件,lsof可以查看进程进行恢复
- 文件存在于磁盘block块当中;
- inode号被删除;inode号没有了,而事实上进程还在的话就能够恢复;
- 索引被删了;
- 文件不能被覆盖,要是覆盖了,文件就没有了
- 确保磁盘只读,没法写入,就没法覆盖
- 卸载分区,原理是一样的,就是防止文件被覆盖;
- inode号被删除;inode号没有了,而事实上进程还在的话就能够恢复;
- 文件被删除之后,进程使用文件;然后lsof查询
- 进程的数据都会在/proc 目录下–>
案例说明:
- 创建文件 passwd
- 在另外一个窗口打开,保持一直打开 vim
- 删掉文件
- lsof–>查看程序是否有在运行;
#创建一个文件-->#使用vim打开一个文件
[root@Node1 ~]# vim aa.txt
this is txt
that is liangjiawei
#打开终端-->删除文件
[root@Node1 ~]# rm -rf aa.txt
#查看进程-->lsof 查找文件描述符-->这里就能看到6659和4U的文件符
[root@Node1 ~]# lsof | grep aa.txt
vim 6659 root 4u REG 253,0 12288 34353107 /root/.aa.txt.swp
#然后恢复
[root@Node1 ~]# cat /proc/6659/fd/4 > aa.txt
[root@Node1 ~]# cat aa.txt
this is txt
that is liangjiawei
1.3、top命令
作用:动态显示系统进程数据,对于所有正在运行的进行和系统负荷提供不断更新得概览信息;
语法:top
选项:
- -d:指定刷新的时间(默认时间为3S跳一次;)
- top运行起来之后:
- 按s–>进入内部输入
- ?:查看帮助
- P:按照CPU占有率排序
- M:按照内存使用率排序
- T:进程使用CPU的时间
- u:按照用户排序
- h:需求帮助
- 1:数字1,显示每个内核的cpu使用率
- 按s–>进入内部输入
top命令输出的信息讲解
[root@Node1 ~]# top
top - 10:42:59 up 25 min, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 104 total, 1 running, 103 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 3.1 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2028116 total, 1801648 free, 98104 used, 128364 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 1773516 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
50 root 20 0 0 0 0 S 6.7 0.0 0:00.98 kworker/0+
1 root 20 0 125424 3760 2564 S 0.0 0.2 0:01.24 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
...................................
#输出的信息详解如下:
#整体的信息如下:
10:42:59 up #表示当前时间
25 min #系统运行时间 格式为时:分
2 users #当前登录用户数
load average: 0.00, 0.01, 0.05 #系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
#任务信息如下
Tasks: 104 total #进程总数
1 running #正在运行的进程数
103 sleeping #睡眠的进程数
0 stopped #停止的进程数
0 zombie #僵尸进程数
#CPU负载信息如下:
%Cpu(s):0.0 us #用户空间占用CPU百分比
3.1 sy #内核空间占用CPU百分比
0.0 ni #用户进程空间内改变过优先级的进程占用CPU百分比
96.9 id #空闲CPU百分比
0.0 wa #等待输入输出的CPU时间百分比
0.0 hi #硬中断(Hardware IRQ)占用CPU的百分比
0.0 si #软中断(Software Interrupts)占用CPU的百分比
0.0 st
#内存的详细情况如下:
KiB Mem : 2028116 total #物理内存总量
1801648 free #使用的物理内存总量
98104 used #空闲内存总量
128364 buff/cache #用作内核缓存的内存量
#虚拟交换分区的情况如下:
KiB Swap: 1048572 total #交换区总量,使用的交换区总量
1048572 free #空闲交换区总量
0 used #空闲交换区总量
1773516 avail Mem #代表可用于进程下一次分配的物理内存数量
#进程信息:
PID #进程ID
USER #进程所有者
PR #优先级
NI #nice值,负值表示高优先级,正值表示低优先级
VIRT #进程使用的虚拟内存总量,单位kb,VIRT=SWAP+RES
RES #进程使用的、未被换出的物理内存大小,单位kb
SHR #共享内存大小,单位kb
S #进程的状态-->进行中还是休眠还是僵尸等等
%CPU #上传更新到现在的CPU时间占用百分比
%MEM #进程使用的物理内存百分比
TIME+ #进程使用的CPU时间总计,单位1/100秒
COMMAND #命令名/命令行
1.2、pstree命令
作用:以树状的形式显示目录下的内容
语法:pstree + 选项
选项:
- -p:显示进程的pid
- -u:显示进程的所属用户;
- -V 显示版本信息。
#查看进程数
[root@Node1 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─agetty
├─auditd───{auditd}
....................
#指定进程号查看
[root@Node1 ~]# pstree -p 6377
sshd(6377)───sshd(6639)───bash(6641)───pstree(6677)
#指定所有者
[root@Node1 ~]# pstree -u liangjiawei
bash
1.3、nice命令
前台进程:终端运行的命令,需要交互
后台进程:守护进程,不受终端的控制,不需要交互
- httpd页面出现403–>有可能就是权限的问题
- 解决:chmod 777–>满权限
- 守护进程:用户httpd
- chown httpd:httpd
- httpd访问空白页面:
- 考虑防火墙与selinux
作用:用于调整程序运行的优先级
语法:nice + 选项
选项:
- -n:指定数值
[root@Node1 ~]# nice -n 8 vim aa.txt
2、后台相关的命令
2.1、&命令
作用:把命令或者是程序放到后台运行;
语法:命令 + &
ctrl+z:将一个正在前台运行的命令放到后台,并且暂停
#编写一个脚本
[root@Node1 ~]# vim a.txt
#!/bin/bash
while true
do
echo `date ` > a.txt
sleep 1
done
#后台运行
[root@Node1 ~]# bash aa.txt &
2.2、jobs命令
作用:查看当前有多少在后台运行的进程,他是一个作业控制的命令
语法:jobs +选项 + 参数
选项:
- -l:显示进程号
- -p:仅任务对应的显示进程号
- -n:显示任务状态的变化
- -r:仅输出运行状态(running)的任务;
- -s:仅输出停止状态(stoped)的任务。
#显示当前后台运行的程序
[root@Node1 ~]# jobs -l
[1]+ 6724 Running bash aa.txt &
2.3、fg命令
作用:将后台中的命令调至前台继续运行
语法:fg + 选项 + 任务号
[root@Node1 ~]# jobs -l
[1]- 6724 Running bash aa.txt &
[2]+ 7166 Running bash aa.txt &
[root@Node1 ~]# fg
bash aa.txt
2.4、bg命令
作用:将后台暂停的命令,变成继续执行;
语法:bg + 任务号
[root@Node1 ~]# ping localhost > /dev/null &
[1] 7378
[root@Node1 ~]# jobs -l
[1]+ 7378 Running ping localhost > /dev/null &
[root@Node1 ~]# bg
3、关闭进程的命令
3.1、kill命令
作用:用于给运行中的进程发送信号
语法:kill + 信号 + PID
选项:
- -l:可以查看信号类型
#查看信号类型
[root@Node1 ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
..................
#常用的信号类型:
1) SIGHUP #重新加载配置
2) SIGINT #终端,相当于ctrl+c
3) SIGQUIT #退出;想你当用ctrl+\
9) SIGKILL #强制终止
15) SIGTERM #默认选项,终止
18) SIGCONT #继续
19) SIGSTOP #停止
20) SIGTSTP #暂停
#杀掉进程
[root@Node1 ~]# pkill -9 7380
3.2、killall命令
作用:使用进程的名称杀死进程
语法:killall + 选项 + 参数
选项:
- -e:对长名称进行精确匹配
- -l:忽略大小写的不同
- -p:杀死进程所属的进程组
- -i:交互式杀死进程,杀死进程前需要进行确认
- -u:杀死指定用户的进程
- -s:用指定的进程号代替默认信号“SIGTERM”
[root@Node1 ~]# killall -9 httpd
3.3、pkill命令
作用:用于杀死一个进程;
语法:pkill + 进程名
[root@Node1 ~]# pkill nginx
4、进程的优先级
4.1、nice命令.
前台进程:终端运行的命令,需要交互
后台进程:守护进程,不受终端的控制,不需要交互
- httpd页面出现403–>有可能就是权限的问题
- 解决:chmod 777–>满权限
- 守护进程:用户httpd
- chown httpd:httpd
- httpd访问空白页面:
- 考虑防火墙与selinux
作用:用于调整程序运行的优先级
语法:nice + 选项
选项:
- -n:指定数值
[root@Node1 ~]# nice -n 8 vim aa.txt
4.2、screen命令
作用:. 使用screen可以方便的管理多个命令行工作流, 而不必担心彼此的影响.
语法:screen + 选项 + 命令
选项:
- -S:创建一个回话名
- -r:进入到某一个会话
- -X:删除某个会话
screen -ls:查看已经建立好的会话链接
使用screen后台执行试试执行命令备份
- 一些命令执行不能中断,使用screan可以解决
#安装
[root@Node1 ~]# yum -y install screen
[root@Node1 ~]# screen -ls
[root@Node1 ~]# screen vim aa.txt
#!/bin/bash
while true
do
echo `date ` > a.txt
sleep 1
done
4.4、uname命令
作用:查看当前系统内核的基本信息
语法:uname + 选项
选项:
- -s:查看系统
- -r:查看内核版本
- -m:查看系统架构
- -i:查看系统的架构
[root@Node1 ~]# uname -a
Linux Node1 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@Node1 ~]# uname -r
3.10.0-957.el7.x86_64
[root@Node1 ~]# uname -s
Linux