ubuntu第八讲:自启动管理
上一篇讲了如何用cpolar软件实现内网穿透,通过简单设置实现了外网远程登录及观看电影功能。今天讲一下如何一开机就自动运行cpolar这个软件。
ubuntu管理开机自启动软件的方法有以下几种:配置rc.local文件,系统自带的软件启动管理器,systemd服务。
先说结论:1.rc.local文件在ubuntu18.04版之后就没有了,但是在其他linux系统(包括部分群晖)下还是可以用,这里稍微了解一下就行。
2.系统自带的软件启动管理器可以设置软件或者脚本在开机时自启动,但是需要先登录系统,也就是说如果只是开机但是未登录系统的话软件是不会运行的。
3.systemd服务。如果想在系统登录前就运行程序,需要利用systemd服务。这是本文重点内容。
rc.local文件rc.local文件本质上是一个shell脚本。将需要执行的指令在rc.local文件内编辑好,然后赋予该文件具有可执行权限(执行sudo chmod+x /etc/rc.local )即可。
基本格式为所有需要执行的指令必须在exit 0 之前。一个文件内可以执行多个脚本,例如
/home/username/test1.sh &
/home/username/test2.sh &
/home/username/test3.sh &
......
exit 0
知识点:
该文件位于/etc/rc.local #注意!在ubuntu18.04版本以后没有这个文件!打开/lib/systemd/rc-local.service可以看到关于rc.local的信息,说明这个文件的功能还是存在的,只是新版的ubuntu已经不推荐使用。
与rc.local配套使用的还有一个文件夹unin.d,目录位于/etc/init.d/,这个文件夹内都是shell脚本文件。另外还有多个文件夹rc*.d,目录位于/etc/rc*.d/,*号表示从0-6,另外还有一个S(大写)。这里面都是一些软链接文件,大多指向init.d文件夹。文件夹名称0-6表示什么意思呢?
0-Halt,关机模式
1-Single,单用户模式
2-Full multi-user with display manager(GUI)多用户模式
3-Full multi-user with display manager(GUI)
4-Full multi-user with display manager(GUI)
5-Full multi-user with display manager(GUI)
6-Reboot,重启
运行runlevel #查看当前系统运行级别,本例为N5。那么主要的配置文件在/etc/rc5.d/目录下。
系统自带的软件启动管理器ubuntu自带软件启动管理工具。图形化界面,对初学者来说比较友好。单击启动软件,出现启动应用程序首选项设置窗口。
可以把需要开机自启动的程序添加到列表内。
举例:添加cpolar自启动命令名称:cpolar #自由输入,自己能理解就行。
命令:/home/rex/下载/cpolar/cpolar http 8096 #指定到自己电脑上cpolar文件存放的位置,并且添加http 8096的参数。
注释:cpolar开启http8096端口 #自由输入,自己能理解就行。
这样设置好之后,开机就会自动运行了。
缺点:只能设置一条指令,要么开通http,要么开通tcp。
通过脚本一键启动http和tcp隧道创建cpolarinstall.sh脚本文件
添加到软件启动器中,也就是说启动器可以直接运行脚本文件。
这样开机的时候,就能同时开通http和tcp端口了。
但是还是有缺点:如果电脑处于未登录状态,这条指令是不会执行的。这样就产生了死循环,我都没有启动tcp端口,怎么能登录电脑呢!不行,还得找办法。
systemd服务Systemd是在 Linux 系统上最新的守护进程管理器,基本用法如下:
$ sudo systemctl enable [service_name] #开机启动某项服务
$ sudo systemctl disable [service_name] #关闭某项服务
$ sudo systemctl status [service_name] #查看某项服务的状态
$ sudo systemctl start [service_name] #启动某项服务
systemctl enable命令会将服务单元添加到/etc/systemd/system/multi-user.target.wants目录下。当系统启动时会自动执行,并且会依照依赖关系按顺序启动服务。当所有服务执行完毕,系统启动过程也就完成了。
知识点:
ubuntu16.10版以后不再使用init.d管理系统,改用systemd,包括用systemctl命令来替代service和chkconfig的功能。
实例演示:设置cpolar在系统登录前自启动第一步:本例我把cpolar程序存放在/opt/cpolar/bin/中(注:一般自己安装的软件都可以放在opt这个文件夹内。)
第二步:在/etc/systemd/system/文件夹内创建cpolar.service配置文件,如下图所示。(我是直接复制另一个service文件,然后改一下名称,这样service文件的基本格式就有了。也可以在别的位置新建文件,然后拷贝过去,例如$ cp -i cpolar.service /etc/systemd/system/)
运行sudo nano /etc/systemd/system/cpolar.service编辑cpolar.service文件,具体内容如下所示。
[Unit]
Description=cpolar Service #描述,请自由发挥,自己能看懂就行
[Service]
WorkingDirectory=/opt/cpolar #指定软件目录
ExecStart=/opt/cpolar/bin/cpolar start-all #软件路径及运行参数。cpolar start-all指启动所有端口,详见cpolar.yml配置文件。
RestartForceExitStatus=3
User=rex #指定“谁”来运行软件
[Install]
WantedBy=multi-user.target #固定语句,不用修改。
知识点:
service是有固定格式的,分为[Unit] [Service] [Install]三个部分。
第三步:生成指向/etc/systemd/system/multi-user.target.wants/的软连接
$ ln -s /etc/systemd/system/cpolar.service /etc/systemd/system/multi-user.target.wants/
所有设置完成,是不是很简单!重启电脑看看运行情况。
(本文结束)
导读指南白学ubuntu系列,目前已经整理了十章内容,我会逐一发布。
ubuntu第一讲:系统安装及初体验
ubuntu第二讲:常用软件推荐与安装
ubuntu第三讲:远程连接
ubuntu第四讲:文件共享
ubuntu第五讲:搭建影音服务器
ubuntu第六讲:硬件监测
ubuntu第七讲:内网穿透
ubuntu第八讲:自启动管理
ubuntu第九讲:service服务及脚本
ubuntu第十讲:SSH远程连接