Ubuntu开机使用systemd管理开机自启动

1.先创建一个新的startup.service文件

sudo touch startup.service

2.通过nano或者vim编辑内容

sudo nano startup.service
或者
sudo vim startup.service

3.编辑内容

[Unit]
Description=MainCmd Service
After=network.target
[Service]
Type=simple
ExecStart=/home/root/XXXX
Restart=on-failure
[Install]
WantedBy=multi-user.target

注:脚本注释

[Unit]
Description:描述了该服务的信息,即"MainCmd Service"。
After:指定了服务应该在哪些其他单元之后启动,这里是在网络(network.target)启动之后。
[Service]
Type:指定了服务的类型,这里是"simple",表示是一个简单的后台进程,同时也可以使用exec或者forking来代表前台运行。

ExecStart:指定了服务启动时要执行的命令或程序的路径,这里是/home/root/XXXX。
Restart:指定了服务在失败时是否自动重启,这里是在发生故障时重新启动服务
[Install]
WantedBy:指定了服务应该安装到哪个目标中,这里是multi-user.target,表示在多用户模式下启动。

forking:适用于会以守护进程方式运行的程序。在程序启动时,系统会派生一个子进程,父进程会退出,子进程则继续在后台运行。
exec:适用于不会以守护进程方式运行的程序。在程序启动时,父进程会等待子进程执行完成,直到子进程退出之后才会返回。

4.移动到/etc/systemd/system/

5.启用该服务并设置开机自启动

sudo systemctl daemon-reload
sudo systemctl enable MainCmd.service

6.可以通过以下命令来检查服务的状态

sudo systemctl status startup.service

现在,重新启动系统,应该会自动启动程序了

附:
如果搞错了服务可以进行删除systemctl
1.停止服务:如果该服务正在运行,先停止它。使用以下命令停止服务:

sudo systemctl stop my.systemctl

2.禁用开机自启动:如果你希望在开机时不再自动启动该服务,可以禁用它。使用以下命令禁用开机自启动:

sudo systemctl disable my.systemctl

3.删除相关文件:删除与该服务相关的服务单元文件。使用以下命令删除服务单元文件:

sudo rm /etc/systemd/system/my.systemctl.service

4.重新加载systemctl配置:
sudo systemctl daemon-reload

如果你的程序没有GUI界面,是无法通过前台进行查看程序是否正在运行,可以通过:

ps -ef | grep xxxx

查找正在运行的与"XXXXX"相关的进程。

要进入这个线程并查看其输出,可以使用strace命令或者gdb调试来查看

使用strace命令来跟踪进程的系统调用和输出。执行以下命令:

sudo strace -p 进程号

使用gdb调试器进入进程并查看其输出。首先,安装gdb(如果尚未安装),然后执行以下命令:

sudo gdb -p 进程号

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值