图片 3

进程命令

By admin in 百科 on 2019年11月7日

用法示例

1、杀掉所有占用/home的进程

[root@localhost ~]# fuser -km /home

2、显示本地所有mysql上端口进程

[root@localhost ~]# fuser mysql/tcp
mysql/tcp:            2680

3、显示详细的信息

[root@localhost ~]# fuser -v top.txt
                     用户     进程号  权限   命令
/root/top.txt:       root     15847 F....  top

4、查看有多个进程正在使用某个目录下文件系统,包含子目录

[root@localhost ~]# fuser -v -m /home/data
                     用户     进程号 权限   命令
/home/data:          root     kernel mount /home/data

5、通过端口定位进程

[root@localhost ~]# fuser -v -n tcp 22
                     用户     进程号 权限   命令
22/tcp:              root      27597 F.... sshd
                     root      31119 F.... sshd
或
[root@localhost ~]# fuser -v 22/tcp
                     用户     进程号 权限   命令
22/tcp:              root      27597 F.... sshd
                     root      31119 F.... sshd

FUSER

fuser功能
fuser
可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.

fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面跟一个字母表示访问类型。

访问类型如下:
c 代表当前目录
e 将此文件作为程序的可执行对象使用

f 打开的文件。默认不显示。
F 打开的文件,用于写操作。默认不显示。

r 根目录。
m 映射文件或者共享库。

s
将此文件作为共享库(或其他可装载对象)使用
当指定的文件没有被访问,或者出现错误的时候,fuser会返回非零。
为了查看使用tcp和udp套接字的进程,需要-n选项并指定名称空间。默认IpV4和IpV6都会显示。套接字可以是本地的或者是远程的端口,和远程的地址。所有的域是可选的,但是其前面的’,’必须存在。如下:
[lcl_port][,[rmt_host][,[rmt_port]]]
对于ip地址和port,名称和数字表示都可以使用。
fuser只把PID输出到标准输出,其他的都输出到标准错误输出。
常用选项
-a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。
-c 和-m一样,用于POSIX兼容。
-k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。
-i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。
-l 列出所有已知的信号名称。
-m name
指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成”name/”,并使用所有挂载在那个目录下面的文件系统。
-n space
指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口,
可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space
(即形如:80/tcp之类的表示)。
-s 静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。
-signal
使用指定的信号,而不是用SIGKILL来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略。
-u 在每个PID后面添加进程拥有者的用户名称。
-v
详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.
-V 输出版本号。
-4
使用IPV4套接字,不能和-6一起应用,只在-n的tcp和udp的命名存在时不被忽略。
-6
使用IPV6套接字,不能和-4一起应用,只在-n的tcp和udp的命名存在时不被忽略。

  • 重置所有的选项,把信号设置为SIGKILL. 

使用示例

显示使用某个文件的进程信息
$ fuser -um /dev/sda2
/dev/sda2: 6378c(quietheart) 6534c(quietheart) 6628(quietheart)
6653c(quietheart) 7429c(quietheart) 7549c(quietheart)
7608c(quietheart)
这个命令在umount的时候很有用,可以找到还有哪些用到这个设备了。

杀掉打开readme文件的程序

$fuser
-m -k -i readme
这里,会在kill之前询问是否确定。最好加上-v以便知道将要杀那个进程。

查看那些程序使用tcp的80端口
$fuser -v -n tcp 80

$fuser
-v 80/tcp
fuser不同信号的应用
用 -l参数可以列出fuser所知的信号
# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM
TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO
PWR SYS
UNUSED
fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL,例如:只是挂起进程,那么发送HUP信号就可以了
# fuser -v /root/install.log
用户 进程号 权限 命令
/root/install.log: root 3347 f…. tail
# fuser -k -SIGHUP /root/install.log
/root/install.log: 3347
# fuser -v /root/install.log

一,为什么要使用fuser?
   先说
fuser的作用,
  
fuser能识别出正在对某个文件或端口访问的进程
  
大家想一下,还有哪个命令具备这个功能?
  
没错,是lsof,
   我们前面讲过,
lsof能够找出正在对指定文件访问的进程,
  
那么它们两者之间有何区别?
  
fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程
   

二,如何使用fuser?
 
  
1,如何用fuser得到正在使用指定文件的进程?
     用法: fuser
文件
    
说明:它会把正在使用当前文件的进程id列出

     [root@localhost
lhd]# umount /
     umount: /:
device is busy.
           (In some
cases useful info about processes that use
            the
device is found by lsof(8) or fuser(1))
     [root@localhost
lhd]# fuser /
     
/:                       1rc     2rc     3rc     4rc     5rc     6rc    
7rc    80rc    82rc    84rc    85rc   153rc   157rc   158rc

                               160rc   165rc   168rc  203rc   204rc  
205rc   253rc   441rc   444rc   516rc   521rc   524rc   582rc  
583rc

                               584rc   633rc  1052rc  1392rc  1394rc 
1417rc  1597rc  1609rc  1617rc  1620rc  1683rc  1744rc  1783r 
1785rc

                               1788rc  1806r  1808r  1810rc  1811rc 
1812rc  1813rc  1814rc  1815rc  1848rc  1886rc  1899rc  1900rc 
2001rc

                               ……太多不一一列出

      说明:
     
这些进程号后面的rc是什么意思?
     
      c
将此文件作为当前目录使用。
      e
将此文件作为程序的可执行对象使用。
      r
将此文件作为根目录使用。
      s
将此文件作为共享库(或其他可装载对象)使用

  
2,如何列出进程的详细信息,而不仅仅是进程id?
     用
-v参数即可
     说明: -v: 
含义是:verbose output,详细的输出信息
     例子:

     [root@dev ~]#
fuser /var/log
    
/var/log:             4196c
     [root@dev ~]#
fuser -v /var/log
     

                          USER        PID ACCESS COMMAND
    
/var/log:            root       4196 ..c.. bash

   
3,如何列出进程所属的用户?
     用
-u参数即可
     说明: -u:
含义:display user IDs,显示用户id
    
     例子:
     [root@dev ~]#
fuser -u /var/log
    
/var/log:             4196c(root)
     说明: -n:
含义:获得正在访问某一端口的进程号,然后可以用kill命令杀死。

     [root@dev ~]#
fuser -un tcp 25
     
25/tcp:             4196(root)
    
4,如何杀死所有正在访问指定文件的进程?
     用
-k参数即可
     说明: -k:含义:
kill processes accessing the named file

     例子:

     [root@localhost
lhd]# fuser -v /root/install.log

                          用户     进程号 权限   命令
    
/root/install.log:   root       3185 f…. tail
     [root@localhost
lhd]# fuser -k /root/install.log
    
/root/install.log:    3185
     [root@localhost
lhd]# fuser -v /root/install.log

     说明:
-k参数能够杀死所有的正在访问指定文件的进程,所以用来杀进程时非常方便
     说明之二:
fuser如何杀死的进程?
            
它发送的是这个信号:SIGKILL

三,多学一点知识

   
1,fuser可以列出它所知的信号:
     用
-l参数即可
    
     例子:
     [root@dev ~]#
fuser -l
     HUP INT QUIT ILL
TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
     STKFLT CHLD CONT
STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
     UNUSED

   
2,fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL
     
例如:只是挂起进程,那么发送HUP信号就可以了
    
      例子:
     
[root@localhost lhd]# fuser -v /root/install.log

                           用户     进程号 权限   命令
     
/root/install.log:   root       3347 f…. tail
     
[root@localhost lhd]# fuser -k -SIGHUP /root/install.log
     
/root/install.log:    3347
     
[root@localhost lhd]# fuser -v /root/install.log

用法示例

1、通过文件定位占用的进程

[root@localhost ~]# top -d 2 > top.txt
[root@localhost ~]# lsof top.txt
lsof:WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
  Output information may be incomplete.
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
top     8900 root    1w   REG    8,2    69035 469790741 top.txt

2、通过文件描述符定位进程

[root@localhost ~]# lsof -d 5 | head -3
lsof:WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
   Output information may be incomplete.
COMMAND  PID  USER   FD   TYPE      DEVICE SIZE/OFF NODE       NAME
systemd  1    root   5u   a_inode   0,10     0     7450       [signalfd]
Xvnc     2678 root   5u   IPv6      41776    0t0   TCP *:6003 (LISTEN)

3、通过进程定位文件

[root@localhost ~]# ps -ef |grep -i  mysql | grep -v grep
mysql 2680  1  2 7月19 ?  11:44:50 /usr/libexec/mysqld --basedir=/usr
[root@localhost ~]# lsof -p 2680 | head -3
lsof:WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
     Output information may be incomplete.
COMMAND  PID  USER   FD    TYPE  DEVICE SIZE/OFF  NODE   NAME
mysqld  2680  mysql  cwd   DIR   8,2    4096      319571 /var/lib/mysql
mysqld  2680  mysql  rtd   DIR   8,2    254       512    /

4、查看用户打开的文件

[root@localhost ~]# lsof -u root | tail -3
lsof:WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
   Output information may be incomplete.
COMMAND   PID   USER  FD     TYPE DEVICE  SIZE/OFF NODE NAME
kworker/3 39337 root  cwd    DIR  8,2     254      512  /
kworker/3 39337 root  rtd    DIR  8,2     254      512  /
kworker/3 39337 root  txt   unknown                     /proc/39337/exe

5、查看程序所占用的端口

[root@localhost ~]# lsof -i:22
COMMAND PID    USER   FD  TYPE  DEVICE      SIZE/OFF NODE NAME
sshd    27597  root   3u  IPv4 1460505039   0t0      TCP *:ssh (LISTEN)
sshd    27597  root   4u  IPv6 1460505041   0t0      TCP *:ssh (LISTEN)

LSOF

lsof 拥有更多的功能
# lsof -i 看系统中有哪些开放的端口,哪些进程、用户在使用它们,比
netstat -lptu 的输出详细。

# lsof -i 4  查看IPv4类型的进程
COMMAND    PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4     2213 Debian-exim    4u  IPv4   4844       TCP *:smtp
(LISTEN)
dhclient3 2306        root    4u  IPv4   4555       UDP *:bootpc

# lsof -i 6  查看IPv6类型的进程
COMMAND  PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4   2213 Debian-exim    3u  IPv6   4820       TCP *:smtp (LISTEN)

# lsof -i @192.168.1.2  查看与某个具体的IP相关联的进程
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
amule   3620 root   16u  IPv4  11925       TCP
192.168.1.2:42556->77.247.178.244:4242 (ESTABLISHED)
amule   3620 root   28u  IPv4  11952       TCP
192.168.1.2:49915->118-166-47-24.dynamic.hinet.net:5140
(ESTABLISHED)

# lsof -p 5670 查看PID为5670的进程打开的文件。

pstree

   
在使用ps查看进程十分方便,但若想查看详细进程和子进程时,则需要使用pstree全命令。由于pstree不是系统自带,需要自行安装

yum -y install pstree

用法示例

1、显示运行程序的PID

[root@localhost ~]# pidof sshd
34128 34059 28835 28820 24697 24627 23228 23215 1995

在显示的结果可以看到共有9个PID,则说明服务器上9个进程均是由sshd启动的。

2、显示Shell的进程

[root@localhost ~]# cat test.sh
#!/bin/bash
i=1;
while [ $i -le 10000 ]
do
 echo $i
 i=$((i+1))
 sleep 120s
done
[root@localhost ~]# ./test.sh &
[root@localhost ~]# pidof -x test.sh
36554

3、显示指定程序的PID

[root@localhost ~]# pidof -s sshd
7524

4、忽略指定的PID

[root@localhost ~]# pidof sshd
9104 9103 7524 7434 4474 4462 1995
[root@localhost ~]# pidof sshd -o 1995
11979 11978 7524 7434 4474 4462

kill

   
在Windows系统中,当某个一个程序出现假死或无反应时,我们常常打开任务管理器,找到对应的进程,然后杀掉该进程。在命令行盛行的Linux中,我们该使用哪个命令?常用于杀掉进程的命令非kill莫属了。

基本语法

pstree [选项]

常用选项如下所示:

选项 说明
-a 显示每个进程的完整指令,包括路径、参数等
-h 高亮显示当前进程及父进程
-g 显示PGID
-n 相同父进程下,按各自的PID进行排序
-p 显示PID
-s 显示父进程
-u username 显示UID信息

用法示例

1、不带参数的示例

[root@localhost ~]# ps
  PID TTY          TIME CMD
11047 pts/0    00:00:00 ps
24892 pts/0    00:00:00 su
25142 pts/0    00:00:00 bash

2、仅显示与当前用户相关的进程和相关信息

[root@localhost ~]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R     0 22720 25142  0  80   0 - 38292 -      pts/0    00:00:00 ps
4 S     0 24892 22641  0  80   0 - 58599 do_wai pts/0    00:00:00 su
4 S     0 25142 24892  0  80   0 - 29305 do_wai pts/0    00:00:00 bash
  • F:表示进程标志,说明当前进程的权限,若为4表示进程权限为root,若为1表示些子进程仅可进行复制(fork)而无法实际运行
  • S:表示进程状态,主要状态有:
      R:进程正在运行
      S:进程处于睡眠状态,但可以被唤醒
      D:进程处于不可被唤醒的睡眠状态,通常该进程可能在等待I/O
      T:停止状态,可能是在工作控制或除错状态
      Z:僵尸状态,进行已经终止但却无法释放内存等
  • UID/PID/PPID:进行的所属UID/PID/PPID
  • C:CPU使用率,单位为%
  • PRI/NI:Priority/Nice缩写,表示进程被CPU执行的优先级,数值越小越快被CPU执行
  • ADDR:与内存相关,ADDR表示该进程在内存的哪个部分,如果是Running进程,会显示 –
  • SZ:与内存相关,表示该进程使用了多少内存;
  • WCHAN:与内存相关,表示该进程目前是否正在运行,-表示正在运行中
  • TTY:启动进程的终端名称
  • TIME:进程的实际CPU占用时间之和,单位为秒
  • CMD:进程命令

3、查看系统所有进程

[root@localhost ~]# ps aux
USER PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root   2  0.0  0.0      0     0 ?        S    8月08   0:00 [kthreadd]
root   3  0.0  0.0      0     0 ?        S    8月08   0:03 [ksoftirqd/0]
root   5  0.0  0.0      0     0 ?        S<   8月08   0:00 [kworker/0:0H]
root   8  0.0  0.0      0     0 ?        S    8月08   0:00 [migration/0]
  • USER:进程所属用户
  • PID:进程标识符
  • %CPU:进程的CPU占比
  • %MEM:进程物理内存占比
  • VSZ:进程虚拟内存(KB)使用量
  • RSS:进程占用的固定内存量(KB)
  • TTY:启动进程的终端名称
  • STAT:进程状态
  • START:进程启动时间
  • TIME:进程的实际CPU占用时间之和
  • COMMAND:进程命令

在Linux中ps通常有三种不同的书写格式

  • BSD格式:选项前不加短横线 – ,多个选项可以组合使用如ps aux
  • UNIX格式:选项前加短横线 -,多个选项可以组合使用如ps -aux
  • GNU长格式:选项前加双短横线 –,如 ps –context

因此ps aux 和ps -aux 在显示的输出信息是一样的。

4、显示自定义列

[root@localhost ~]# ps -eo pid,user,cmd
PID USER     CMD
  2 root     [kthreadd]
  3 root     [ksoftirqd/0]
  5 root     [kworker/0:0H]
  8 root     [migration/0]

5、对输出结果进行排序

[root@localhost ~]# ps -ef --sort=uid,-ppid,+pid
UID  PID    PPID  C STIME TTY        TIME CMD
root 31637 31624  0 17:42 pts/1  00:00:00 less -s
root 40772 25142  0 17:44 pts/0  00:00:00 ps -ef --sort=uid,-ppid,+pid
root 40773 25142  0 17:44 pts/0  00:00:00 more
root 25142 24892  0 15:32 pts/0  00:00:00 bash
root 31624 24164  0 17:42 pts/1  00:00:00 man ps
root 24164 23955  0 15:32 pts/1  00:00:00 bash
root 23955 23586  0 15:32 pts/1  00:00:00 su root
root 24892 22641  0 15:32 pts/0  00:00:00 su root

用法示例

1、显示信号列表
图片 1

除以上显示信号,还有一个特殊的编号0为测试信号,其作用如下:

  • 用于测试目标进程是否存在

[root@localhost ~]# kill -l 0
T
[root@localhost ~]# kill -0 99999
bash: kill: (99999) - 没有那个进程
  • 用于测试当前用户是否拥有向该进程发送信号的权限

[admin@localhost ~]# kill -0 2325
bash: kill: (2325) - 操作不被允许

2、查看信号对应的编号或名称

[root@localhost ~]# kill -l SIGHUP
1
[root@localhost ~]# kill -l KILL
9
[root@localhost ~]# kill -l 9
KILL

在Linux中常用信号如下所示:

信号名称 编号 解释
HUP 1 终端断线
INT 2 中断(同Ctrl+C)
QUIT 3 退出(同Ctrl+)
KILL 9 强制终止
TEEM 15 终止
CONT 18 继续(与STOP相反)
STOP 19 暂停(同Ctrl+Z)

3、强制终止进程

[root@localhost ~]# kill -9 26744
[root@localhost ~]# kill -kill 30470

在使用kill -9需要注意的事项如下所示:

  • kill不能杀死进程为1的init进程
  • 在使用kill
    -9时是强行终止进程且没有通知目标进程进行自我清理,而是突然被中止,可以造成资源无法正常释放,数据无法同步到磁盘等,在使用前需要三思

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
图片 2

基本用法

ps [选项]

其常用选项如下所示:

选项 说明
-A 显示所有进程,同选项-e
-a 显示所有进程,但排除新会话的首进程和无控制终端的进程
-d 显示所有进程,但排除新会话的首进程
-e 显示所有进程,同选项-A
r 仅显示正在运行的进程
-C cmdlist 显示指定命令的进程信息
-p pidlist 显示指定PID的进程
-t ttylist 显示指定tty的进程
-u userlist 显示指定有效用户ID或名字的进程
-c 显示CLS和PRI列
-f 添加详细列信息,通常与其他选项联合使用
-x 没有关联到终端上的进程也进行显示
-o 仅显示自定义的列
-l 仅显示属于当前登录用户的PID与相关信息列表
–sort spec 对输出信息进行排序 + 升序排序 – 降序排序

基本用法

kill [选项] [PID]

其常用选项如下所示:

选项 说明
-s signal 向目标进程发送指定的信号类型,信号可以为名称或数字
-l 显示信号名称列表,如果在-l加编号则查看信号名称,反之亦然
-a 处理当前进程时,不限制命令和PID的对应关系
-p 指定kill命令仅显示相关进程的进程号,而不发送任何信号
  • 无选项:表示向目标进程发送默认的终止信号,即SIGTERM
  • PID>0:表示向目标进程发送信号,此处的PID可以是多个PID,用空格进行分隔
  • PID=0:表示向当前进程组的所有进程发送信号
  • PID=-1:表示向除当前 kill 进程和 init 进程之外的所有进程发送信号
  • PID<-1:表示向进程组PGID的所有进程发送信号,如-123,则向进程组PGID为123的所有进程发送信号

基本用法

pidof [选项] [文件名]

其常用选项参数如下所示:

选项 说明
-?或-h 显示帮助信息
-a 显示打开文件存在的进程
-c 进程名 显示指定进程所打开的文件
-d FD 显示文件描述符(FD)占用的进程
+d 目录名 显示当前目录下被打开的文件
+D 目录名 递归显示当前目录下被打开的文件
-i 条件 显示符合条件的进程
-p pid 显示指定PID打开的文件
-u uid 显示指定UID打开的文件
-g 显示所属组标识符PGID
R 显示父进程PPID

其中选项 -i 支持的条件如下所示:

条件 说明 示例
4/6 IPv4/ IPv6 lsof -i
protocol UDP/TCP lsof -i TCP
hostname 网络主机名 lsof -i@localhost
hostaddr 网络地址 lsof -i@192.168.8.8
service 服务名称,可查看/etc/services lsof -i:ssh
port 端口 lsof -i:22

lsof输出的详细信息解释如下:

  • COMMAND:进程名称,如果名称较长,则默认只显示前9个字符
  • PID:进程标识符,如果添加-R参数,则显示父进程PPID
  • USER:进程所有者,如果添加-g参数,则显示组标识符PGID
  • FD:文件描述符
  • TYPE:文件类型,常见类型如下所示:
    DIR:表示目录
    REG:表示普通文件
    CHR:表示字符类型
    BLK:表示块设备类型
    UNIX:表示UNIX套接字
    FIFO:表示先进先出队列
    IPv4:表示IPv4套接字
    IPv6:表示IPv6套接字

文件描述符FD,但却可以表示两类内容:

  • 第一类是文件描述符
    0:标准输入
    1:标准输出
    2:标准错误输出
    n:其他文件描述符的数值

图片 3

  • 第二类描述文件特征的标识
    CWD:表示应用程序的当前工作目录,即程序启动的目录
    txt:表示文件类型为程序代码或数据
    mem:内存映射文件
    pd:父目录
    rtd:根目录
    DEL:表示文件已经删除但还存在于内存中

基本用法

pidof [选项] [程序名]

其常用选项参数如下所示:

选项 说明
-s 仅返回一个PID
-c 仅返回具有相同root目录的PID
-x 显示由脚本开启的进程
-o omitpid 忽略指定的PID
pidof命令的返回值通常只有两个:
- 0:pidof命令至少找到一个对应的PID
- 1:pidof没有找到任何匹配的PID

lsof

   
在Windows中删除文件时,会出现被占用而暂时无法删除的情况,这个我们会一款非常好用的软件Unlocker,那么在Linux中类似的情况如何处理了?今天我们来学习lsof命令。
    lsof全称list open
files
。用于查看进程打开的文件、目录和套接字等信息。

pidof

   
我们知道每个小孩一出生就会一个全国唯一的编号来对其进行标识,用于以后上学,办社保等,就是我们的身份证号。那么在Linux系统中,用来管理运行程序的标识叫做PID,就是大家熟知的进程ID。那么如何来找到程序的PID了,那么就需要用到命令pidof,其功能主要用来查看运行程序的PID。

fuser

    fuser主要用于显示进程正在使用的文件、套接字、挂载点等。

基本用法

fuser [选项] [文件名]

其常用选项如下所示:

选项 说明
-a ,–all 显示命令行中指定的所有文件
-c 同-m选项,用于兼容POSIX
-k, –kill 杀掉使用文件的进程
-i, –interactive 杀掉进程前需要用户确认,如果无-k参数则默认忽略该参数
-l, –list-signals 显示所有已知的 signal名称
-m NAME, –mount NAME 指定一个挂载的文件系统或被挂载的设备
-n SPACE 指定一个不同的命名空间,支持不同的命名空间文件(默认为文件名)、UDP(本地UDP端口)、TCP(本地TCP端口),为避免歧义,可以使用name/space形式,如80/tcp
-w 仅杀掉拥有写入权限的进程,如果无-k参数则默认忽略该参数
-s, –silent 静默模式,-u和-v忽略该参数
-u, –user 在PID后显示所属的用户名
-v, –verbose 显示详细信息
-4, –ipv4 仅搜索IPv4的套接字
-6, –ipv6 仅搜索IPv6的套接字

fuser显示指定文件或文件系统的进程PID,在默认模式中,每个文件名后面会用一个字母表示访问类型,如下所示:

  • c:表示当前目录
  • e:表示该文件为可执行文件
  • f:表示被打开的文件,默认模式中f不显示
  • F:表示被打开的文件,用于写入操作,默认模式中F不显示
  • r:根目录
  • m:映射文件或共享lib

-f 和 -F 只有与选项 -v 一起使用的时候才会显示,其他情况则默认不显示

fuser与lsof对比

对比项 fuser lsof
定位方式 通过文件查找进程 通过进程查找文件
所属标准 POSIX
参数类型 文件/网络端口 文件/PID/网络端口
进程输出 PID PID详细信息
是否可发送信息 可以,使用-k 不可以

ps

   
在Windows系统中用于查看进程通常是通过任务管理器。而在Linux中,我们用ps(Process
Status)命令来查看进程。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 大奖888网页版登陆 版权所有