nohup &的用法、进程查看以及终止

1.nohup

用途:不挂断地运行命令。如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

语法:nohup Command [ Arg … ] [ & ]

  • 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
  • 如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
  • 如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:该命令返回状态如下   

  • 126 可以查找但不能调用 Command 参数指定的命令。   
  • 127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
  • 除此之外,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

2.&

用途在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出

3.nohup与&一起使用

nohup与&合在一起会让命令永久的在后台执行

语法nohup COMMAND &

eg: nohup command > myout.file 2>&1 &   

其中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ,在该例中 2>&1是将标准错误重定向到标准输出,标准输出再被重定向输入到myout.file文件中。

 4.测试

测试文件 mylog.sh

1 #!/bin/bash
2 
3 index=0
4 while [ 1 ]
5     do 
6         echo mylog $index
7         index=$[ index+1 ]
8         sleep 1s
9     done

  测试四种情况:

执行命令 状态
./mylog.sh 结果会输出到终端
使用Ctrl + C发送SIGINT信号或关闭session发送SIGHUP信号,程序关闭                                                         
./mylog.sh & 结果会输出到终端
使用Ctrl + C发送SIGINT信号,程序免疫                                                        
关闭session发送SIGHUP信号,程序关闭
nohup ./mylog.sh 结果默认会输出到nohup.out
使用Ctrl + C发送SIGINT信号,程序关闭
关闭session发送SIGHUP信号,程序免疫
nohup ./mylog.sh & 同时免疫SIGINT和SIGHUP信号

 

测试过程

1.使用./mylog.sh

nohup &的用法、进程查看以及终止

2.使用./mylog.sh &

nohup &的用法、进程查看以及终止

 使用ctrl+c发送SIGINT信号,程序免疫

关闭终端窗口,查看程序,程序关闭

nohup &的用法、进程查看以及终止

3.使用nohup ./mylog.sh

使用ctrl+c,程序关闭,输出信息被保存到当前目录nohup.out文件中

 nohup &的用法、进程查看以及终止

关闭终端窗口,查看程序,程序免疫

nohup &的用法、进程查看以及终止

 4.使用nohup ./mylog.sh &

使用ctrl+c,程序免疫

nohup &的用法、进程查看以及终止

 nohup &的用法、进程查看以及终止

关闭终端窗口,程序免疫

nohup &的用法、进程查看以及终止

只有通过kill杀掉进程

 nohup &的用法、进程查看以及终止

常用任务管理命令

# jobs      //查看任务,返回任务编号n和进程号

# bg  %n   //将编号为n的任务转后台运行

# fg  %n   //将编号为n的任务转前台运行

# ctrl+z    //挂起当前任务

# ctrl+c    //结束当前任务

查看进程

ps aux |fgrep ‘mylog.sh‘|grep -v grep

a:显示所有程序 

 u:以用户为主的格式来显示 

 x:显示所有程序,不以终端机来区分

用grep -v参数可以将grep命令排除掉

用awk提取一下进程ID,即 ps -aux|grep mylog.sh| grep -v grep | awk ‘{print $2}‘

 

nohup &的用法、进程查看以及终止

上一篇:CSS 实现背景半透明


下一篇:Linux基础练习题答案7.22