1.背景
实现linux下程序随开机自运行,如服务器日志脚本等。
2.原理
Ubuntu 20.04的服务管理是基于systemd的,设置服务自启动最推荐的方法是创建一个systemd服务文件,配置好要执行的服务。
3.创建开机自启动脚本
脚本名run.sh,内容如下:
#!/bin/bash cd ~/ touch girl.txt
开头一行不能省略,若运行多个程序,防卡死,也可加程序间加sleep 2,即休眠一会。
4.创建systemd服务文件
在/etc/systemd/user目录下创建一个systemd服务文件,命名为user-defined.service,内容如下:
[Unit] After=network.service [Service] ExecStart=/home/xing/run.sh [Install] WantedBy=default.target
其中,After表示服务何时启动,After=network.service 表示网络连接完成后,启动我们的服务;ExecStart表示脚本(run.sh)的路径;WantedBy默认填default.target。
注意:ExecStart=/home/xing/run.sh 不能用 ~/ 来代替/home/$USER。
5.将systemd服务文件与脚本更改权限,使其可执行。
sudo chmod 744 ~/run.sh sudo chmod 664 /etc/systemd/user/user-defined.service
6.重新加载系统的systemd服务文件,并启用我们自己写的user-defined.service文件
sudo systemctl daemon-reload systemctl --user enable user-defined.service
7.其它
以上即完成开机自启动,但是,systemd启动的服务默认是root权限,放脚本很不安全,如果只需要登录用户的权限,改成user service (systemctl --user)更好,如果有桌面环境,还可以用XDG Autostart。