【Ubuntu笔记】18.04版本添加开机自启动

博主在尝试在Ubuntu系统中添加自启动服务时遇到困难,先后经历了16.04和18.04版本的不同处理方式,通过查阅资料和尝试,最终解决了Execformaterror的问题,成功让服务自启动。过程中涉及rc.local、Systemd以及服务脚本的编写和权限设置。

吐槽

由于对linux系统的不熟悉,以及没太重视版本不同带来的影响,简简单单的添加一个自启动服务愣是搞了我三天,各个坑撞得我一头包。

结果

按惯例,先上结果。
1.sudo vim /etc/rc.local 打开这个文件
2.首先确保开头必须是 #!/bin/bash
3.sudo /etc/init.d/my_tcp start 添加启动服务的命令
ps:以上仅适用部分Ubuntu18.04,至于为什么这么说,下面细细道来。

过程

1.首先准备好想要自启动的服务脚本,我的在这里:
https://blog.csdn.net/ylc0919/article/details/113482042.

2.根据简单百度以及群里老哥指点,找rc.local嘛,找到了把命令塞进去就行。

然后问题来了,我的虚拟机Ubuntu16.04搜出来的rc.local根本改不了,sudo也不行,头疼了好久也没办法。

于是我不管了,直接拿上云服务器改,打开/etc/rc.local,结果里面是一堆奇怪的东西:

/usr/local/qcloud/irq/net_smp_affinity.sh >/tmp/net_affinity.log 2>&1
/usr/local/qcloud/cpuidle/cpuidle_support.sh &> /tmp/cpuidle_support.log
/usr/local/qcloud/rps/set_rps.sh >/tmp/setRps.log 2>&1
/usr/local/qcloud/irq/virtio_blk_smp_affinity.sh > /tmp/virtio_blk_affinity.log 2>&1
/usr/local/qcloud/gpu/nv_gpu_conf.sh >/tmp/nv_gpu_conf.log 2>&1

这啥意思,我也不知道,然后我就在这里各种加命令/etc/init.d/my_tcp start,开头加,结尾加,原本的东西我没敢动他,改一次重启一下,打开野人家园的网络调试助手,重启一下试一下,哎嘿,都不行。

然后我觉得是root权限问题,又给他加上sudo,然后上面过程又重复了一遍,还是不行,我都怀疑是调试助手的问题了,手动打开tcp服务器,能连上,那说明工具没问题。

3.老哥们的说法行不通,那就继续百度,昨天一天基本上都花在这上面了,具体过程不多讲,反正都失败了。(现在回想一下还有点小尴尬)

4.今天搜索时候发现了点问题,据说Ubuntu18.04和16.04启动不太一样,难怪有些东西搞得我迷迷糊糊的,内容在这:
https://blog.csdn.net/ylc0919/article/details/113482779
由于微信的链接保存了也打不开,我只好自己转一下。

5.我按照他的方法搞了一下,还是不行。于是我顺着这条线索继续搜,然后又找到一个好帖子,链接在这:
https://blog.csdn.net/zbc415766331/article/details/104761027/

6.可惜还是不行,帖子里面也没详细讲,于是我按照帖子里面的链接打开了那个讲解Systemd的网页,在里面找到了一条很关键的指令:

sudo systemctl status my_tcp

这个可以查询你脚本执行的状态,然后给我跳了一堆错误,记不得是啥错误了,现在回过头去找也没找到。

7.这个时候柳暗花明的事情来了,当前目录我发现了个文件rc-local.service,好家伙,这不就是之前老哥们讲的rc-local嘛,进去一看,果然是用来启动/etc/rc.local的,这不正好说明之前的过程2的操作没问题嘛,我这饶了地球跑了一圈,还费什么劲自己写.service文件,于是我用上面那条查状态命令查了一下这个rc-local的状态,里面发现了一个错误Exec format error。

百度这个错误,
https://blog.csdn.net/anzhuangguai/article/details/51249894
帖子里的老哥给了解决方法,在脚本第一行加上#! /bin/bash,然后我就去/etc/rc.local加了,顺便把我的脚本命令也加上,现在这个文件是这样的:

#!/bin/bash
sudo /etc/init.d/my_tcp start
/usr/local/qcloud/irq/net_smp_affinity.sh >/tmp/net_affinity.log 2>&1
/usr/local/qcloud/cpuidle/cpuidle_support.sh &> /tmp/cpuidle_support.log
/usr/local/qcloud/rps/set_rps.sh >/tmp/setRps.log 2>&1
/usr/local/qcloud/irq/virtio_blk_smp_affinity.sh > /tmp/virtio_blk_affinity.log 2>&1
/usr/local/qcloud/gpu/nv_gpu_conf.sh >/tmp/nv_gpu_conf.log 2>&1

修改完,继续惯例重启云服务器,网络调试助手点击连接,然后

连!上!了!

### 安装Ubuntu 18.04实现双系统启动 #### 准备工作 为了成功安装Ubuntu 18.04并设置为与现有操作系统共存的双系统环境,在开始之前需完成如下准备工作: - **下载Ubuntu ISO镜像文件**:访问官方网站获取最新版本Ubuntu 18.04 LTS镜像文件[^1]。 - **创建可引导USB驱动器**:利用工具如Rufus或其他类似软件来制作一个可以用来启动计算机的USB闪存盘,用于后续安装过程中的引导加载[^2]。 - **备份重要数据**:由于硬盘分区操作可能会导致原有数据丢失的风险,建议提前做好个人资料的安全保存措施[^3]。 #### 开始安装流程 当一切就绪之后,按照以下指导继续进行实际的操作步骤: - 插入已准备好的Live USB设备,并重启机器进入BIOS/UEFI界面调整启动顺序使电脑能够优先从外部介质读取启动项;对于某些较新的笔记本型号可能还需要禁用安全模式(Secure Boot)[^4]。 - 进入到Ubuntu Live环境中可以选择尝试不安装的方式先行体验一下桌面环境,确认无误后再正式执行安装命令。这一步骤并非强制性的但是推荐新手用户采取此方式熟悉即将使用的Linux发行版特性。 - 正式开启安装向导后会遇到有关于语言选择、键盘布局设定等问题,请依据实际情况作出回应直至到达磁盘配置环节。此时应特别注意保护好现有的Windows分区不受影响的同时合理规划剩余可用空间供新加入的操作系统使用。 - 接下来就是等待整个复制解压过程结束,期间保持网络连接状态以便自动更新组件列表以及必要的固件支持包。最后阶段将会询问是否要立即重启计算机以应用更改——一旦选择了肯定的回答就意味着初步完成了全部任务! #### 后续处理事项 重开机以后应当能顺利看到GRUB菜单提供了两种不同平台之间的切换选项。如果发现无法正常识别或显示则可能是EFI引导记录存在问题需要重新修复grub引导程序。 ```bash sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update sudo apt-get install -y boot-repair && boot-repair ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值