Ubuntu开机自启动(适用于ubuntu桌面、服务器、树莓派)
Ubuntu开机自启动
- 前言
- 一、服务(Service)是什么?
- 二、编写服务
- 1.创建服务
- 2.撰写服务内容
- 3.设置服务自启动
- 二、编写脚本
- 三、编写程序
- 总结
前言
声明:本人使用树莓派4B+ 8G安装的ubuntu20.04系统。
在ubuntu系统下,我们常常需要自己写的一些程序能够开机自启动,避免每次都需要的繁琐操作。在网上搜罗了一圈,大多数都是针对桌面版的介绍,对于无界面的远程版不是找不到就是试过很多次发现都无效!!!气的人心肝脾肺疼。当然也跟个人水平相关T-T。摸索了一下终于试出了一个百分百可靠的方法,虽然可能比较复杂,但能够很好的帮助理解自启动的逻辑,仅凭个人理解,所以见仁见智吧。
一、服务(Service)是什么?
ubuntu系统的service(服务)是随开机自启动的,并且在后台运行的程序。Ubuntu系统在开机时会先执行 /etc/systemd/system/目录下的各个服务(.service)程序,因此我们可以编写服务来实现程序开机自启动的功能。下面我们以开机执行一个python程序为例:
二、编写服务
1.创建服务
在/etc/systemd/system/目录下创建一个服务startsocket.service。
桌面版:
sudo gedit /etc/systemd/system/startsocket.service
服务器版(远程登录):
sudo vim /etc/systemd/system/startsocket.service
2.撰写服务内容
一般正常的启动文件主要分成三部分:
[Unit] 段: 启动顺序与依赖关系
[Service] 段: 启动行为,如何启动,启动类型
[Install] 段: 定义如何安装这个配置文件,即怎样做到开机启动
编写刚刚创建的服务文件:
[Unit]
Description=startsocket #服务描述
After=syslog.target #该服务启动在什么之后[Service]
ExecStart=/home/ubuntu/start_socket.sh #服务需要执行的脚本
SuccessExitStatus=143[Install]
WantedBy=multi-user.target graphical.target #在多用户模式和图形化界面下启动
填写完毕后保存退出即可。(如果是vim打开的,先按 esc 、再按 :x ,即可保存退出)
VIM命令介绍:https://blog.csdn.net/wangguchao/article/details/81780567
3.设置服务自启动
重载服务列表:
sudo systemctl daemon-reload
设置服务自启动:
sudo systemctl enable startsocket.service
执行完以后就会提示已经创建成功
Created symlink /etc/systemd/system/multi-user.target.wants/startsocket.service → /etc/systemd/system/startsocket.service.
Created symlink /etc/systemd/system/graphical.target.wants/startsocket.service → /etc/systemd/system/startsocket.service.
如果是disable,则是
Removed /etc/systemd/system/multi-user.target.wants/startsocket.service.
Removed /etc/systemd/system/graphical.target.wants/startsocket.service.
服务相关的操作:
sudo systemctl disable xxx (关闭某个服务自启动)
sudo service xxx start (手动启动某个服务)
sudo service xxx restart (重启某个服务)
sudo service xxx stop (停止某个服务)
sudo service xxx status (查看某个服务的运行状态)
journalctl -fu xxx (查看程序的输出)
如查看服务的状态,active就是正在运行。
ubuntu@ubuntu:~$ sudo service startsocket status
● startsocket.service - startsocketLoaded: loaded (/etc/systemd/system/startsocket.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2021-12-24 01:26:37 UTC; 6min agoMain PID: 1709 (start_socket.sh)Tasks: 3 (limit: 9251)CGroup: /system.slice/startsocket.service├─1709 /bin/bash /home/ubuntu/start_socket.sh├─1721 sudo -S python3 main.py└─1762 python3 main.pyDec 24 01:26:37 ubuntu systemd[1]: Started startsocket.
Dec 24 01:26:39 ubuntu sudo[1721]: root : TTY=unknown ; PWD=/home/ubuntu/raspReboot ; USER=root ; COMM>
Dec 24 01:26:39 ubuntu sudo[1721]: pam_unix(sudo:session): session opened for user root by (uid=0)
lines 1-13/13 (END)
二、编写脚本
上面编写的服务在开机时会启动一个名为start_socket.sh的脚本。下面我们来创建这个脚本:
(1)创建脚本:
touch start_socket.sh
(2)赋予可执行权限
chmod +x start_socket.sh
(3)编辑脚本
gedit start_socket.sh
或
vim start_socket.sh
(4)填写内容
#!/bin/bash
cd /home/ubuntu/pythontest
python3 main.py
该脚本的意思为进入/home/ubuntu/pythontest文件夹执行python3 main.py程序。在这个脚本里填写的就是开机能执行的程序了,根据自己的需求在这里填写对应的执行命令即可。需要注意的是执行的文件保证都已经赋予过可执行权限。
三、编写程序
最后在脚本中提到的main.py里面写自己的程序就可以啦。
总结
以上就是要讲的所有内容,本文仅仅简单介绍了服务+脚本的方法实现开机自启动,都是最简单的操作了,主要是理解自启动的实现过程,然后根据自己的需求就可以完成各式各样的功能。
Ubuntu开机自启动(适用于ubuntu桌面、服务器、树莓派)相关推荐
- Ubuntu开机自启动程序的方法
文章目录 Ubuntu开机自启动程序的方法 目标效果 方案1:修改rc.local 测试结果 方案2:单独增加一个开机启动的脚本 错误1 错误2 实测结果 refs 方案3:利用官方快捷方式启动 Ub ...
- RoboMaster机甲大师——视觉组——ubuntu开机自启动脚本分析
ubuntu开机自启动脚本分析 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 很久没更新了,感觉自己太弗拉不堪了,这次主要分享的是在视觉程序 ...
- 解决Ubuntu开机之后不显示桌面图标,只显示桌面文件的问题
Ubuntu开机之后不显示桌面图标(指左侧那一栏),但桌面上的文件可以使用,鼠标可以使用. 鼠标右键–>打开终端:(如果鼠标不能使用,按ctl+alt+f1打开命令行桌面) 可能是compiz的 ...
- Ubuntu开机自启动的两种方法总结
第一种方法 1,新建个脚本文件new_service.sh #!/bin/bash # command content exit 0 2,设置权限 sudo chmod 755 new_service ...
- Ubuntu开机自启动 读取.bashrc
开机自启动脚本,启动ros节点. ros节点可以启动,但是source命令没起作用,导致matlab端读不到自定义消息. 查了一下,大概是开机自启的shell和开机后手动开启终端的shell,并不完全 ...
- 树莓派~ubuntu开机自启动
Ubuntu Mate 开机自启ROS 创建 start.sh文件 #! /bin/bash cd /home/test ./opencv_exampleexit 0 运行脚本文件 chmod 777 ...
- Ubuntu开机自启动桌面程序
在用户的home目录下面 ~/.config/autostart/目录下面添加启动项. 创建一个 appname.desktop 的文件,文件内容如下: [Desktop Entry] Type=A ...
- Ubuntu 22.04 LTS 中文桌面/服务器正式版发布 (内含 ISO 镜像下载)
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 迫不及待地想尝试 Ubuntu 22.04 LTS?现在,它终于可以下载和升级了. 该版本在之前的 LTS 版本基 ...
- Ubuntu开机自启动与sh脚本
启动多个终端 .sh脚本启动多个程序(对应多个终端)之ROS篇 我们先介绍一下终端的一些信息: 终端输入: gnome-terminal 能否打开一个终端, 然后运行gnome-terminal有一些 ...
最新文章
- CPU 空闲时在干嘛?
- Cisco BFD双向转发检测技术部署案例
- python:实现Django简单的网页设计
- Spring boot+Spring Security 4配置整合实例
- C#中的Lock锁深入理解
- 【二分】雪(luogu 7405)
- 关于socket组播和ssdp(一)[修改1.2]
- python去除图像光照不均匀_【转载】光照不均匀图像分割技巧
- macbook配置java环境变量_配置java环境变量
- Spark2.2(三十九):如何根据appName监控spark任务,当任务不存在则启动(任务存在当超过多久没有活动状态则kill,等待下次启动)...
- C--计算求1+2!+3!+.......+n!
- linux/windows eclipse远程调试 c/c++程序
- PostgreSQL导入sql文件的方法
- C语言负数的小数次方,c语言 10 负次方
- QT 使用QAxWidget和QAxObject操作DOCX和EXECL文件,包括修改数据、插入图片、修改表格、打印文档、复制SHEET、修改页码数等
- python绘制世界人口地图
- autojs之获取ip(内网ip和公网ip)
- Unity 3D 游戏编程设计g03
- 不经一番寒彻骨,安得梅花扑鼻香?
- 快速搭建个人博客网站——Hexo