linux

nohup命令如何在系统启动时自动运行

小樊
58
2025-08-25 03:35:06
栏目: 编程语言

要在系统启动时自动运行nohup命令,你可以将命令添加到系统的启动脚本中。以下是在不同系统中实现的方法:

对于Systemd(大多数现代Linux发行版):

  1. 创建一个新的Systemd服务文件。使用文本编辑器创建一个新文件,例如/etc/systemd/system/my-nohup-service.service。请确保使用root权限运行文本编辑器。
sudo nano /etc/systemd/system/my-nohup-service.service
  1. 将以下内容粘贴到新创建的服务文件中,根据需要替换<your-command>为你想要运行的命令。
[Unit]
Description=My nohup service

[Service]
Type=simple
ExecStart=/usr/bin/nohup /path/to/your/command --option1 --option2 >/dev/null 2>&1 &
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 保存并关闭文件。

  2. 通过以下命令启用新创建的服务,使其在启动时自动运行:

sudo systemctl enable my-nohup-service.service
  1. 若要立即启动服务,可以运行:
sudo systemctl start my-nohup-service.service
  1. 要检查服务状态,请运行:
sudo systemctl status my-nohup-service.service

对于SysVinit(较旧的Linux发行版):

  1. 创建一个新的启动脚本。使用文本编辑器创建一个新文件,例如/etc/init.d/my-nohup-script。请确保使用root权限运行文本编辑器。
sudo nano /etc/init.d/my-nohup-script
  1. 将以下内容粘贴到新创建的启动脚本中,根据需要替换<your-command>为你想要运行的命令。
#!/bin/sh
### BEGIN INIT INFO
# Provides:          my-nohup-script
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Start my nohup command at boot time
# Description:
### END INIT INFO

case "$1" in
    start)
        nohup /path/to/your/command --option1 --option2 >/dev/null 2>&1 &
        ;;
    stop)
        # Add any stop commands if necessary
        ;;
    *)
        echo "Usage: /etc/init.d/my-nohup-script {start|stop}"
        exit 1
        ;;
esac

exit 0
  1. 保存并关闭文件。

  2. 通过以下命令使新创建的启动脚本可执行:

sudo chmod +x /etc/init.d/my-nohup-script
  1. 将脚本添加到启动序列中:
sudo update-rc.d my-nohup-script defaults

现在,无论你使用的是哪种系统,nohup命令都将在系统启动时自动运行。如果需要停止或重启服务,请使用相应的systemctl/etc/init.d/my-nohup-script命令。

0
看了该问题的人还看了