在 ubuntu 系统上如何添加自己的脚本,让脚本开机自启

2017 年 6 月 22 日
 gzwawj
7632 次点击
所在节点    问与答
21 条回复
l9rw
2017 年 6 月 22 日
Baymaxbowen
2017 年 6 月 22 日
@l9rw 求网址
sfyumi
2017 年 6 月 22 日
@l9rw 这个网址很好啊, 哈哈哈. 已收藏
0asis
2017 年 6 月 22 日
有个叫 init.d 的文件夹,具体百度
ETiV
2017 年 6 月 22 日
crontab 加一行

@reboot CMD
gzwawj
2017 年 6 月 22 日
@0asis 怎么让“ ffmpeg -i rtsp://admin:******@192.168.16.233/h264/ch1/main/av_stream -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 -f flv rtmp://192.168.16.112:1935/live/hall_2 >/dev/null 2>&1 &
”这条命令加到开机自动运行
0asis
2017 年 6 月 22 日
@gzwawj 应该是写一个 shell 然后把 shell 文件加到 init.d
knightdf
2017 年 6 月 22 日
加到 /etc/rc.local
gzwawj
2017 年 6 月 22 日
@0asis 其他的命令都可以使用这种方法,但是 ffmpeg 这个应用使用这种方法不管用
thecon
2017 年 6 月 22 日
早期版本很简单 , 把脚本放 /etc/rc.local 里就行了

16.04 以后就比较麻烦了, 得自己添加个 systemctl 服务
gzwawj
2017 年 6 月 22 日
@thecon 有没有参考的文章或者网站
thecon
2017 年 6 月 22 日
@gzwawj

vi /etc/systemd/system/尼想要的服务名.service
加入如下内容:
[Unit]
Description=尼的脚本路径 Compatibility
ConditionPathExists=尼的脚本路径

[Service]
Type=forking
ExecStart=尼的脚本路径 start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

脚本要有可执行属性, 路径要绝对路径
然后取保脚本正确执行后最后的代码是:
exit 0

激活服务:
sudo systemctl enable 尼想要的服务名
启动服务器和检查状态:
sudo systemctl start 尼想要的服务名.service
sudo systemctl status 尼想要的服务名.service
gzwawj
2017 年 6 月 22 日
@thecon 那开机是不是自动启动啊
thecon
2017 年 6 月 22 日
@gzwawj

sudo systemctl enable 尼想要的服务名

这步完了就是开机自动启动了
lxml
2017 年 6 月 22 日
@thecon #14 感谢,我搜教程老出来说添加 rc.local,我心说找了半天我 17.04 文件夹都是 rc0.local,果然又又又又被改版坑了。
ahu
2017 年 6 月 22 日
一楼这个简直了,,,,😂
ahu
2017 年 6 月 22 日
zjp
2017 年 6 月 22 日
阮一峰的博客有 systemd 的介绍。顺带吐个槽:doge: 就在刚刚,systemctl enable xxx 一直不成功,排查半小时发现脚本打漏仨字母…
mingyun
2017 年 6 月 22 日
@ahu 这个有意思了
b1eberg0n
2017 年 6 月 23 日
supervisor

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/370230

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX