centos

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

小樊
32
2025-12-25 12:42:21
栏目: 智能运维

在 CentOS 系统中,你可以使用 systemd 服务来实现 nohup 命令在系统启动时自动运行。以下是具体步骤:

  1. 创建一个 systemd 服务文件: 首先,你需要创建一个新的 systemd 服务文件。假设你的脚本名为 my_script.sh,并且位于 /home/user/scripts/ 目录下。

    sudo nano /etc/systemd/system/my_script.service
    
  2. 编辑服务文件: 在打开的文件中,添加以下内容:

    [Unit]
    Description=My Script Service
    After=network.target
    
    [Service]
    ExecStart=/bin/bash -c 'nohup /home/user/scripts/my_script.sh > /dev/null 2>&1 &'
    Restart=always
    User=user
    Group=user
    Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    [Install]
    WantedBy=multi-user.target
    

    解释:

    • Description:服务的描述。
    • After:指定服务启动的顺序,这里表示在网络启动后启动。
    • ExecStart:指定要执行的命令,这里使用 nohup 来运行脚本,并将输出重定向到 /dev/null
    • Restart:指定服务重启策略,always 表示总是重启。
    • UserGroup:指定运行服务的用户和组。
    • Environment:指定环境变量。
    • WantedBy:指定服务启动的目标。
  3. 重新加载 systemd 配置: 保存并关闭文件后,重新加载 systemd 配置以使新服务生效。

    sudo systemctl daemon-reload
    
  4. 启用服务: 启用服务,使其在系统启动时自动运行。

    sudo systemctl enable my_script.service
    
  5. 启动服务: 立即启动服务。

    sudo systemctl start my_script.service
    
  6. 检查服务状态: 检查服务的状态以确保它正在运行。

    sudo systemctl status my_script.service
    

通过以上步骤,你的 nohup 命令将在系统启动时自动运行。如果你需要停止或重启服务,可以使用以下命令:

这样,你就可以确保你的脚本在系统启动时自动运行,并且不会因为终端关闭而中断。

0
看了该问题的人还看了