对于linux后台运行命令不只是& 这么简单
如果只使用& ,也可以实现后台运行,不过这种方式是与终端绑定的,有父子进程关系
如果终端退出了,会发出一个停止命令让后台运行的程序也终止
如果想要退出终端的前提下,不让后台程序也终止.应该这么解决
方式一: nohup 命令 &
方式二: (命令 &)
方式三: setsid 命令
setsid ping www.baidu.com > ./test.txt
# 注意不需要加& 符号
方式四:(最强大,程序挂了还有重启功能) supervisor 进程管理包
如果你的程序已经在前台运行了,没有加后台运行命令,不要紧,这么做解决:
ctrl + z 挂起程序, 然后 bg 调到后台去. fg可以在调到前台. 如果有多个挂起程序, 使用jobs查看,然后指定程序号指定到后台/前台
如果你的程序在前台/后台运行了,没有加nohup 和 setpid ,又想解除后台运行程序与当前终端的绑定关系,一样能解决:
使用disown 命令
disown -a 清除当前已经停止运行的后台程序
disown -h 解除程序与终端的绑定. disown -h %n ; n代表后台的运行号,通过jobs查看运行号.也可以使用disown -h %% 来解除所有后台运行的程序与终端关系
disown -r 清除正在运行的后台程序,慎用
网友评论