我有 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.tiny
:ESC退出编辑模式,然后: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