Linux 开机自启
2020-04-21 18:58 清晨、午后 阅读(412) 评论(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 文件内容如下
[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