一年前第一次下载ubuntu虚拟机尝试linux的时候还是用的sysvinit, 虽然那个时候根本不知到shell是个什么, 但从论坛里水贴的人口中隐隐约约感觉到开机后系统会从某某地方运行脚本自动做一些事情, 好像是/etc 下名字里带r什么什么文件. 星际译王因该就是这么自动启动的, 如果修改那个r文件说不定还能让电脑开机后自动运行我用c写的循环输出"hello world"的高难度程序. 居然想到这么深的地步我实在是太厉害了.但现在基本上发行版都换成systemd了, r什么文件也没有了, 因该怎么写开机启动脚本呢?
首先准备原材料, 使用systemd的linux一台.
在/etc下创建rc.local
$ cd /etc
$ sudo touch rc.local
这就是搞出来的rc.local了. 但怎么在开机的时候启动呢?
sysyemd 会在开机时启动各种各样的services, 得用services来运行rc.local脚本.所以还需要给systemd 添加自定义serices. services 默认在/usr/lib/systemd/system下.
cd /usr/lib/systemd/system
里面有各种各样后缀(包括services)的文件
随便找一个看看, 比如这里我们看到有一个sshd.service,肯定和ssh有关系, 看看
居然还有特定的格式! 问题一下就难搞了. 还好我充分发挥了我机智的特点, 搜索一下随手拷了一份叫rc-local.service下来.(谢谢作者)
1 [Unit]
2 Description=/etc/rc.local
3
4 [Service]
5 Type=oneshot
6 ExecStart=/etc/rc.local
7 TimeoutSec=0
8 StandardInput=tty
9 RemainAfterExit=yes
10
11 [Install]
12 WantedBy=multi-user.target
具体关于service编写的介绍可以用
$man systemd.service
来查看
最后启动服务就算大功告成啦, 具体往rc.local里写些什么就随意啦
$systemctl enable rc-local.service