Linux — nohup命令
一、nohup介绍
1. nohup
- 用途:nohup 是 no hang up 的缩写,就是不挂断的意思,不挂断地运行命令。
- 语法:nohup Command [ Arg … ] [ & ]
- 场景:
- 如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束或者通过ssh终端连接可能ssh连接会提前结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
- 在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
2. nohup + &
-
&:
- 用途:在后台运行
- 语法:command &:即在一个命令的最后面加&,表示这个命令放在后台执行
所以一般将 nohup 与 & 结合在一起使用 - eg:sh test.sh &
将sh test.sh任务放到后台 ,关闭xshell,对应的任务也跟着停止。
-
nohup + &:
-
语法:nohup command &
-
egs:
nohup command > myout.file 2>&1 &
在上面的例子中:
- 0 – stdin 标准输入(standard input),
- 1 – stdout 标准输出(standard output),
- 2 – stderr 标准错误(standard error) ;
2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。
-
二、案例总结
-
sh test.sh & :
将sh test.sh任务放到后台 ,关闭xshell,对应的任务也跟着停止。 -
nohup sh test.sh:
将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。 -
nohup sh test.sh &:
将sh test.sh任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
三、关闭后台运行程序
-
查看当前后台运行的命令
-
jobs 命令:
功能:查看当前终端后台运行的任务 -
ps 命令:
功能:查看当前的所有进程ps -aux | grep “test.sh”:
a:显示所有程序
u:以用户为主的格式来显示
x:显示所有程序,不以终端机来区分
-
-
关闭当前后台运行的命令
-
kill命令:结束进程
-
通过jobs命令查看jobnum,然后执行 kill %jobnum
-
通过ps命令查看进程号PID,然后执行 kill pid
-
-
如果是前台进程的话,直接执行 Ctrl+c 就可以终止了
-
五、前后台进程的切换与控制
-
fg命令
功能:将后台中的命令调至前台继续运行
如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。
-
Ctrl + z 命令
功能:将一个正在前台执行的命令放到后台,并且处于暂停状态
-
bg命令
功能:将一个在后台暂停的命令,变成在后台继续执行
如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行。