实验环境:
OS: Ubuntu_12.04 / Ubuntu_17.10 / Dietpi_V154 / Raspbian_8
方法一:借助 systemd 工具管理
systemd 是一款 Linux 系统工具,用来启动守护进程,已成为众多 Linux 的标准配置。
配置文件位于 /etc/systemd/
路径下。具体参阅:
简单实现 systemd 管理的过程方法
第一步 创建 .service 文件
1
$ vim /etc/systemd/system/[name].serveice
样例如下,实现目的是确保 Network Ready 后再启动目标进程
1
2
3
4
5
6
7
8
9
10
11
12[Unit]
Description=Run after network
After=network.target multi-user.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/home/order
ExecReload=/home/order
[Install]
WantedBy=multi-user.target
- [Unit] 中
After
定义了启动顺序,可以通过systemd-analyze critical-chain
来确定具体的内容;- [Service] 中
ExecStart / ExecReload
定义了服务所调取的脚本。
第二步 激活 .service 文件
1
2$ systemctl enable [name].serveice
$ systemctl daemon-reload
方法二:借助 init.d 实现
init 进程是 Linux 历史悠久的进程启动方式,系统的 /etc/init.d/
目录维护初始化服务,具体可以参阅:
实现 init.d 服务管理的过程方法
第一步 创建 service 文件
1
$ vim /etc/init.d/homebase # Fedora系统目录路径在 /etc/rc.d/init.d/
内容如下,Required-Start
项指明了启动前置条件
Dietpi_V154 Kernel 3.4.113
Required-Start: $network测试失败
1 |
|
第二步 增加可执行权限
1 | $ chmod +x /etc/init.d/homebase |
第三步 设置开机自启
1 | $ update-rc.d homebase defaults |
第四步 service 管理技巧
可以随时通过 service XXX start|stop|restart
控制程序状态,还可以通过status查看服务的详细运行信息
1
$ service XXX status # 查看服务状态
方法三:借助 rc.local 实现入口
/etc/rc.local
是系统初始化完成后会执行的脚本,可以安全的在里面添加自定义程序的启动入口,这种方法最为常用。
该文件的格式一般为:
1 |
|
入口指令需要添加在 exit 0
之前。