nohup
?是一个 POSIX 命令,它的名称来源于“no hang up”的缩写。这个命令的基本用途是运行一个命令,使得该命令在用户登出或者终端关闭后继续运行。nohup
?命令通常与后台运行的命令(使用?&
?符号)结合使用,以便在终端关闭后继续执行长时间运行的进程。
基本语法:
nohup command [arguments] &
command
?是你想要运行的命令,[arguments]
?是传递给该命令的任何参数。&
?将命令放入后台执行。
例如,如果你在一个 SSH 会话中启动了一个长时间运行的脚本或者服务,并且你不希望在你断开连接时该进程被终止,你可以使用?nohup
。
示例命令:
nohup python my_script.py &
这将启动?my_script.py
?脚本,并且不会在用户登出时中断。
nohup
?默认会将标准输出(stdout)和标准错误(stderr)重定向到一个名为?nohup.out
?的文件中,除非另外指定。如果你想要将输出重定向到不同的文件,你可以这样做:
nohup python my_script.py > output.log 2>&1 &
在这个例子中,标准输出和标准错误都被重定向到?output.log
?文件中。
请注意,使用?nohup
?并不阻止进程接收到系统发送的其他信号,比如系统关机时发送的?SIGTERM
。为了更精细地控制进程在后台运行的行为,可以使用像?screen
?或?tmux
?这样的终端复用器,或者考虑将任务编写为系统服务,使用?systemd
?或?upstart
?等系统级别的工具来管理