ubuntu进入桌面自动启动脚本_如何优雅地实现Ubuntu/CentOS等Linux系统开机自启动自定义脚本...

在旧时代是使用update-rc.d命令来操作的,具体步骤可以查阅网上其他资料,在这里介绍使用systemctl命令来更加优雅地实现。

0x01 编写脚本

脚本存放在/etc/init.d位置下,文件名如 hello,记得加上可执行权限。

sudo vi /etc/init.d/hello

sudo chmod +x /etc/init.d/hello

脚本将由root用户自动执行,编写时涉及到文件等一些权限操作时注意一下就好。

对于脚本的内容。。。emmm..确实是有点格式要求的,一开始我直接就撸了一句

echo "hello" >> /home/ubuntu/log

然而并无卵用,正确的姿势应该是这样的,最简单的脚本如下:

#!/bin/sh

### BEGIN INIT INFO

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

### END INIT INFO

echo "hello world" >> /home/ubuntu/log

开头的那几行注释,一句都必不可少,shell可以换成#!/bin/bash,也可以是其他的都行。但必须有指定脚本所使用的shell。注释完后就是自己写的脚本内容了,我这里只是随便hello了一下。

Default-Start、 Default-Stop 是指脚本在哪个runlevel被执行,以上的2345是最常见的运行等级,一般脚本都这样写就行了。

详情点我看Linux标准

0x02 设置脚本开机自启动

这里就可以优雅地使用systemctl命令了,一句话搞定:

sudo systemctl enable hello

如果脚本里那几行注释没有缺少的话,是不会有任何报错的。

如果出现

update-rc.d: error: XXX Default-Start contains no runlevels, aborting.

意味着,脚本里缺少了运行级别的说明,并不知道什么时候启动。

如果没有指定shell,脚本可能无法成功执行。

0x03 Good Luck

sudo reboot

重启几次看看脚本执行成功了没有吧~~~每一次重启,那个log文件都会多一句hello world。

0x04 取消脚本开机自启动

sudo systemctl disable hello

0x05 调整启动顺序

有些程序需要先有网络才能顺利启动,可以采用官方的例子,调整启动顺序:

# Required-Start: $local_fs $network $remote_fs

就是在有网、本地文件系统、远程文件系统都就绪情况下再启动本服务。

### BEGIN INIT INFO

# Provides: lsb-ourdb

# Required-Start: $local_fs $network $remote_fs

# Required-Stop: $local_fs $network $remote_fs

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: start and stop OurDB

# Description: OurDB is a very fast and reliable database

# engine used for illustrating init scripts

### END INIT INFO

Linux就是这么简单优雅~❤❤❤

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值