nohup
(no hang-up)命令用于在后台运行程序,使其在用户退出登录后继续运行
使用 &
将进程放入后台运行:
在命令末尾添加 &
符号,可以将进程放入后台运行。例如:
nohup your_command &
重定向输出:
默认情况下,nohup
会将输出重定向到名为 nohup.out
的文件中。你可以使用重定向操作符 >
或 >>
将输出重定向到其他文件。例如:
nohup your_command > output.log 2>&1 &
这里,>
将标准输出重定向到 output.log
文件,2>&1
将标准错误重定向到标准输出(即 output.log
文件),最后的 &
将进程放入后台运行。
使用 disown
命令:
如果你已经在前台运行了一个命令,可以使用 disown
命令将其放入后台并取消与终端的关联。例如:
your_command
disown
这样,即使你关闭终端,命令也会继续运行。
使用 screen
或 tmux
:
screen
和 tmux
是终端复用器,可以让你在一个终端窗口中运行多个会话。当你需要离开时,可以断开与会话的连接,稍后再重新连接。例如,使用 screen
:
screen -S your_session_name
your_command
# 按 Ctrl-A 然后按 D 断开与会话的连接
要重新连接会话,请运行:
screen -r your_session_name
使用 systemd
服务(适用于系统服务):
如果你想让一个命令作为系统服务运行,可以使用 systemd
。创建一个名为 your_service.service
的文件,包含以下内容:
[Unit]
Description=Your service description
[Service]
ExecStart=/path/to/your_command
Restart=always
User=your_user
Group=your_group
[Install]
WantedBy=multi-user.target
将此文件保存到 /etc/systemd/system/
目录下,然后运行以下命令启用和启动服务:
sudo systemctl enable your_service.service
sudo systemctl start your_service.service
这样,你的命令将作为系统服务运行,不受用户登录状态的影响。