nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
nohup Command [ Arg … ] [ & ]
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍旧执行。
- # 后台运行test.sh脚本
- nohup bash test.sh &
在终端如果看到以下输出说明运行成功
appending output to nohup.out
注意:如果未加 & ,前台运行的话,Ctrl+C关闭后该脚本即结束运行
- # 查看进程
- ps -ef |grep test.sh
具有方框中的进程即成功,此时即使将当前终端关闭此进程仍将继续进行
结束进程:
kill -9 17670
使用setsid命令可实现同样效果
setsid命令子进程从父进程继承了:SessionID、进程组ID和打开的终端。子进程如果要脱离这些,代码中可通过调用setsid来实现。
命令行或脚本中可以通过使用命令setsid来运行程序实现。setsid帮助一个进程脱离从父进程继承而来的已打开的终端、隶属进程组和隶属的会话。
例如:
setsid bash test.sh &