ubuntu第八讲:自启动管理

靖明谈科技 2024-07-09 00:43:26

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远程连接

0 阅读:1

靖明谈科技

简介:感谢大家的关注