nohup—后端守护进程

要将一个命令放到后台执行,我们一般使用nohup sh command &

为什么要nohup?

因为我用使用Scrt这种终端工具退出的时候会向我们在当前shell下启动的进程发生一个SIGHUP信号,

而SIGHUP信号的默认行为时终止进程,所以nohup的意思是屏蔽SIGHUP信号。

下面我们做一个测试:

在一个窗口运行一个不带nohup的后台程序
[root@limt ~]# sh  Testlsof.sh > 111.log &
[1] 4486
[root@limt ~]# jobs
[1]+  Running                 sh Testlsof.sh > 111.log &
在另外一个窗口查看后台程序
[root@limt ~]# ps -ef|grep Testlsof
root      4486  4315  0 20:11 pts/1    00:00:00 sh Testlsof.sh
root      4574  4500  0 20:12 pts/0    00:00:00 grep Testlsof
关闭第一个窗口,后台进程也退出
[root@limt ~]# ps -ef|grep Testlsof
root      4661  4500  0 20:12 pts/0    00:00:00 grep Testlsof
 
在一个窗口运行一个带nohup的后台程序
[root@limt ~]# nohup sh Testlsof.sh > 111.log &
[1] 2710
[root@limt ~]# nohup: 忽略输入重定向错误到标准输出端
[root@limt ~]# jobs
[1]+  Running                 nohup sh Testlsof.sh > 111.log &
在另外一个窗口查看后台程序
[root@limt ~]# ps -ef|grep Testlsof
root      2710  2664  0 20:23 pts/1    00:00:00 sh Testlsof.sh   //父进程为shell
root      2794  2728  0 20:23 pts/2    00:00:00 grep Testlsof
关闭第一个窗口,后台进程没有退出
[root@limt ~]# ps -ef|grep Testlsof
root      2710     1  0 20:23 ?        00:00:00 sh Testlsof.sh   <span style="font-family: Arial, Helvetica, sans-serif;">//父进程为init进程</span>
root      3223  2728  0 20:23 pts/2    00:00:00 grep Testlsof

 

PS是LINUX下最常用的也是非常强大的进程查看命令

常见的使用方法是检查一个进程是否存在:

//以下这条命令是检查java 进程是否存在.
ps -ef |grep java

1. ps简介

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本

同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、

进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

2. ps命令及其参数

ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设

备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。

该命令语法格式如下:

ps [选项]

下面对命令选项进行说明:

-e 显示所有进程。

-f 全格式。

-h 不显示标题。

-l 长格式。

-w 宽输出。

a 显示终端上的所有进程,包括其他用户的进程。

r 只显示正在运行的进程。

x 显示没有控制终端的进程。

你可能感兴趣的:(nohup)