作者
林一
白天搬砖,晚上做梦。我有故事,你有酒么?
Linux 命令 nohup 命令解析
nohup 是一个在 Linux/Unix 系统中常用的命令,它的作用是在后台运行一个命令或脚本,并且不会因为终端的关闭而终止。换句话说,使用 nohup 运行的命令或脚本会忽略挂起(HUP)信号,即忽略终端关闭的信号。
nohup 的一般形式如下:
代码语言:javascript复制nohup 命令的一般形式:nohup command_name &。
nohup 是命令本身。
command_name 是你要在后台运行的命令或脚本的名称。
& 是用来将命令放在后台运行的符号。
如果你想在后台运行一个名为 my_script.py 的 Python 脚本,可以使用以下命令:
nohup python3 my_script.py &
这将在后台运行 my_script.py,并且输出会被重定向到一个名为 nohup.out 的文件。
为方便读者理解,林一写个具体的 demo:
代码语言:javascript复制假设你有一个需要长时间运行的脚本 my_script.sh,
并且你希望在睡觉期间让它继续运行。
你可以使用以下命令:nohup ./my_script.sh &
这将在后台运行 my_script.sh,并且输出会被重定向到 nohup.out 文件。即使你关闭终端或退出登录,脚本也会继续运行。
在上述 demo 中,使用了 ./my_script.sh 来运行脚本。这是因为在该目录下直接运行脚本可以避免因为路径问题导致的错误。& 符号将命令放在后台运行,这样你就可以关闭终端而不会影响脚本的运行。
Linux 命令 nohup 命令注意事项
使用 nohup 运行的命令或脚本在默认情况下会忽略挂起信号,但如果你想在终端关闭时收到通知,可以使用 -n 参数。
在使用 nohup 时,最好将输出重定向到一个文件,这样可以避免输出被写入多个文件而导致的混乱。
如果你的脚本需要接收输入或使用管道将输出发送到另一个命令,那么这些操作不会在后台执行,
在这种情况下,你可以使用 -p 参数来将输入或输出重定向到一个文件。例如,使用 nohup -p ./my_script.sh < input.txt & 将从 input.txt 中读取输入