Linux 开机自启
2020-04-21 18:58 清晨、午后 阅读(426) 评论(0) 编辑 收藏 举报1. 后台服务自启动
方法一、
a. 可以把需要在开机后启动执行的命令写入如下文件(Ubuntu 测试OK)
/etc/rc.local
方法二(适用于 init.d 守护程序 和 GUI 程序)
a. 自定义服务(init.d 守护程序)
以 ceph 服务为例,创建文件 /usr/lib/systemd/system/ceph.service ,并写入如下内容(修改该文件后执行 systemctl daemon-reload 使该文件生效)
[Unit] Description= ceph Service After=syslog.target network.target [Service] PIDFile=/run/ceph.pid ExecStart=/opt/vpservice/vsims/ceph/start.sh
ExecStop=/opt/vpservice/vsims/ceph/stop.sh KillMode=process
Restart=always RestartSec=2s
StartLimitInterval=0 [Install] WantedBy=multi-user.target
注意:/opt/vpservice/vsims/ceph/start.sh 正常退出后,会调用 ExecStop=/opt/vpservice/vsims/ceph/stop.sh
参数解释
estart=always: 只要不是通过systemctl stop来停止服务,任何情况下都必须要重启服务,默认值为no
RestartSec=2s: 重启间隔,比如某次异常后,等待5(s)再进行启动,默认值0.1(s)
StartLimitInterval=0: 无限次重启,默认是10秒内如果重启超过5次则不再重启,设置为0表示不限次数重启
然后就可以用 service ceph start 命令启动 ceph 服务了,其实就是执行 /opt/vpservice/vsims/ceph/start.sh 脚本,该脚本具体启动相关进程
Systemd 配置项详见如下链接:
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
b. 设置开机自启动
systemctl enable ceph // 执行后会在 /etc/systemd/system/multi-user.target.wants 下生成 /usr/lib/systemd/system/ceph.service 的连接文件
systemctl disable ceph // 执行后会取消 /usr/lib/systemd/system/ceph.service 的连接文件
c. 自定义服务(GUI 程序)
以 kmsd 服务为例,创建文件 /usr/lib/systemd/user/kmsd.service,并写入如下内容(修改该文件后执行 systemctl daemon-reload 使该文件生效)
[Unit] Description= kms daemon service After=display-manager.service [Service] ExecStart=/usr/bin/kmstools // 一个 GUI 应用程序 Restart=always [Install] WantedBy=default.target
d. 设置开机自启动
systemctl --user enable kmsd.service // 注意该命令无法在 root 权限下执行
e.停止服务通用脚本
#!/bin/bash NAME=ceph-fuse echo -en "\033[1;32m info: \033[0m" echo "service name $NAME" ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'` echo -en "\033[1;32m info: \033[0m" echo "pid list:"$ID echo "---------------" for id in $ID do kill -9 $id echo "killed $id" done echo "---------------" NAME=ceph echo -en "\033[1;32m info: \033[0m" echo "service name $NAME" ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'` echo -en "\033[1;32m info: \033[0m" echo "pid list:"$ID echo "---------------" for id in $ID do kill -9 $id echo "killed $id" done echo "---------------"
2. 桌面应用自启动(执行一次,失败后不在尝试)
创建 /etc/xdg/autostart/vrvclouddisk.desktop 文件内容如下
1 2 3 4 5 6 7 8 9 10 11 | [Desktop Entry] Name=云盘 Name[zh_CN]=云盘 Comment=vrvclouddisk client Exec=/opt/MJBZGL/DZWDGL/VRV/vrvclouddisk.sh // 启动时执行的脚本 Icon=/opt/MJBZGL/DZWDGL/VRV/linux-unpacked/resources/renderer/assets/img/tray_red.png Terminal= false Type=Application Categories=System Encoding=UTF-8 StartupNotify= true |
Ubuntu 开机进入桌面之后会执行/etc/xdg/autostart/文件中的脚本
-------------------------------------
Restart=always
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架