技术介绍
nohup
命令是Linux系统中用于在后台运行程序的命令,即使用户退出登录或者终端关闭,程序仍然会继续运行。nohup
命令的基本语法格式如下:
nohup command [option]... [arg]... &
command
是要执行的命令,[option]
和[arg]
是可选的参数。&
符号表示将命令放到后台运行。
使用方法
1、打开终端,输入以下命令启动一个简单的shell脚本:
nohup sh test.sh > output.log 2>&1 &
这条命令的作用是以非交互模式运行名为test.sh
的shell脚本,并将标准输出和错误输出重定向到output.log
文件中,最后将进程放到后台运行。
2、如果需要查看后台运行的进程,可以使用ps
命令:
ps aux | grep test.sh
3、如果需要停止后台运行的进程,可以使用kill
命令:
kill [进程ID]
4、如果需要查看被终止进程的状态,可以使用ps -o state= -p [进程ID]
命令:
ps -o state= -p [进程ID]
相关问题与解答
1、如何查看nohup命令的帮助信息?
答:nohup
命令的帮助信息可以通过输入nohup --help
或查看其手册页(man page)获取,手册页可以通过输入man nohup
查看。
2、为什么使用nohup命令启动的程序会在终端关闭后自动退出?
答:使用nohup命令启动的程序会在终端关闭后自动退出,是因为nohup命令只是将程序放到了后台运行,并没有将其与终端会话关联起来,当终端关闭时,与其关联的所有进程都会被终止,如果需要让程序在终端关闭后继续运行,可以将程序与一个新的会话关联起来,例如使用tmux
或screen
等工具。
3、如何让nohup命令启动的程序在后台运行时不占用终端?
答:可以使用disown
命令将程序从当前终端会话中分离出来,这样即使终端关闭,程序也会继续在后台运行,具体操作如下:
nohup command > output.log 2>&1 & disown && exec $SHELL
4、如何查看nohup命令启动的程序的PID?
答:可以使用echo $!
命令查看最近一个后台运行的进程的PID。
nohup command > output.log 2>&1 & echo $! > pid.txt && exec $SHELL
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/127741.html