是的,做了无数遍还是不长记性,昨天又在这上面踩坑了;在ubuntu上写的启动脚本不执行,仅仅是可执行权限和用户权限的问题,又浪费了一上午;
在unbuntu启动时自动做一些工作,最佳实践是:
你想要执行一个服务
- 如果是比较老的ubuntu (version<=14.04LTS);
这个时候你需要利用ubuntu的upstart机制
简单说来,就是将一个这样的脚本:
1 2 3 |
|
存为taskxxx.conf文件,放到/etc/init 目录下面(这将会在开机时用root用户权限启动);
或者存为 ~/.config/upstart(这将会在开机时用当前用户权限启动)
- 如果你是比较现代的ubuntu (version>=16.04LTS)
你需要利用 systemd 服务,这个我们之前写文章科普过:
https://brain-zhang.github.io/blog/2016/08/22/how-to-write-standard-startup-script/
仅仅想执行一条简单的命令
1
|
|
加入执行的命令,不要忘了最后加exit
1 2 |
|
增加可执行权限
1
|
|
注意:
- 要有可执行权限,这个最容易踩坑,ubuntu安装完毕 /etc/rc.local 是没有可执行权限的
- 注意执行命令的ENV变量,不确定的时候要在命令签名设定SHELL ENV Variable
- 如果是执行一个脚本,注意脚本命令调用的shell (bash or sh or zsh),以及ENV Variable
- 注意执行脚本、执行命令的用户
如果是修改一个环境变量
修改当前用户:
1
|
|
所有用户生效:
1
|
|
最后,附赠最简单粗暴的开机执行任务方式
就是在/etc/rc.local 里面启动一个tmux session,在里面执行想要运行的命令;简单粗暴有效
来个模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|