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号没有了,而事实上进程还在的话就能够恢复;
      • 索引被删了;
    • 文件不能被覆盖,要是覆盖了,文件就没有了
      • 确保磁盘只读,没法写入,就没法覆盖
      • 卸载分区,原理是一样的,就是防止文件被覆盖;
  • 文件被删除之后,进程使用文件;然后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使用率

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
05-24 02:03