Ubuntu 如何添加守护进程到启动项

Ubuntu 如何添加守护进程到启动项

我有 Ubuntu 18.04

我在 Ubuntu 上安装了 bitcoinz 节点。通常我使用以下命令启动它:

/home/user1/bitcoinz/src/bitcoinzd -datadir=/home/user1/bitcoinz/data > /dev/null 2> /dev/null &

我以 user1 身份启动它,而不是以 root 身份启动。如何在服务器启动时添加启动此守护进程?为此,我可以使用命令sudo update-rc.d xxx defaults,但如何添加参数并以 user1 身份运行?

答案1

您可以使用 cron 启动您的命令。

  • 打开终端
  • 以user1身份运行crontab -e运行命令
  • 添加到最后:

    * * * * * /bin/date >> /home/user1/mydate
    

检查 /home/user1/mydate 文件是否出现并且您可以看到其内容

  • 创建~/scripts文件夹:mkdir ~/scripts
  • 将您的命令添加到/home/user1/scripts/bitcoinz脚本中:(vim.tiny ~/scripts/bitcoinz点击i进行编辑)

    #!/bin/sh
    /home/user1/bitcoinz/src/bitcoinzd -datadir=/home/user1/bitcoinz/data > /dev/null 2> /dev/null &
    

保存并退出(用于vim.tinyESC退出编辑模式,然后:wq保存退出)

  • 使脚本可执行:chmod +x ~/scripts/bitcoinz
  • 运行crontab -e并添加到末尾:@reboot /home/user1/scripts/bitcoinz

您可以在脚本内部设置参数。您也可以cron使用 以 root 用户身份运行sudo crontab -e,这样它可以在重启后以 root 身份启动。

要提供标题中所述的服务,请执行以下操作:

  • 创建新的 systemd 服务:

    sudo vim.tiny /lib/systemd/system/bitcoinz.service
    sudo ln -s /lib/systemd/system/bitcoinz.service /etc/systemd/system/
    

    粘贴其旁边的内容:

    [Unit]
    Description=Start bitcoinz
    After=suspend.target
    
    [Service]
    Type=simple
    ExecStart=/home/user1/scripts/bitcoinz
    RestartSec=10s
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
  • 启用并启动新创建的服务:

    sudo systemctl enable bitcoinz && sudo systemctl start bitcoinz
    

以用户身份使用服务:

  • 创建目录mkdir -p ~/.config/systemd/user
  • 在那里创建 ubitcoinz.service 文件:touch ~/.config/systemd/user/ubitcoinz.service
  • 编辑它并添加与上一个文件相同的条目
  • 使用--user选项来处理它

    systemctl --user daemon-reload
    systemctl --user enable ubitcoinz
    systemctl --user start ubitcoinz
    
  • 可以使用以下方式查看 bitcoinz 命令的输出journalctl -u ubitcoinz

  • 不仅在用户登录时启动用户服务,而且在启动时启动:

    loginctl enable-linger user1
    
  • 检查状态: loginctl user-status user1

参考

相关内容