大家好,我是良许。

在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务。在 Windows 下,我们有很多方法可以设置开机启动,但在 Linux 系统下我们需要如何操作呢?

Linux 下同样可以设置开机启动,但可能需要我们敲一些命令(可能也有 UI 界面的设置方法,但我不熟,我更多是玩命令)。下面我们就介绍三种简单但可行的开机启动设置方法。

方法一:修改 /etc/rc.d/rc.local 文件

/etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话,可以将自己脚本路径加到该文件里。

但是,首先需要确认你有运行这个文件的权限。

$ chmod +x /etc/rc.d/rc.local

为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。

$ vim auto_run_script.sh#!/bin/bash
date >> /home/alvin/output.txt
hostname >> /home/alvin/output.txt

保存退出后,再给它赋予可执行权限:

$ chmod +x auto_run_script.sh

然后,我们再将脚本添加到 /etc/rc.d/rc.local 文件最后一行:

$ vim /etc/rc.d/rc.local/home/alvin/auto_run_script.sh

接下来,我们就可以试试效果了。直接重启系统就可以了:

$ sudo reboot

重启之后,就会在家目录下看到脚本执行的结果了。

方法二:使用 crontab

大家知道,crontab 是 Linux 下的计划任务,当时间达到我们设定的时间时,可以自动触发某些脚本的运行。

我们可以自己设置计划任务时间,然后编写对应的脚本。但是,有个特殊的任务,叫作 @reboot ,我们其实也可以直接从它的字面意义看出来,这个任务就是在系统重启之后自动运行某个脚本。

那它将运行的是什么脚本呢?我们如何去设置这个脚本呢?我们可以通过 crontab -e 来设置。

$ crontab -e@reboot /home/alvin/auto_run_script.sh

然后,直接重启即可。运行的效果跟上面类似。

方法三:使用 systemd 服务

以上介绍的两种方法,在任何 Linux 系统上都可以使用。但本方法仅适用于 systemd 系统。如何区分是不是 systemd 系统?很简单,只需运行 ps aux 命令,查看 pid 为 1 的进程是不是 systemd 。

为了实现目的,我们需要创建一个 systemd 启动服务,并把它放置在 /etc/systemd/system/ 目录下。

我们创建的 systemd 启动服务如下。请注意,这时后缀是 .service ,而不是 .sh

$ vim auto_run_script.service[Unit]
Description=Run a Custom Script at Startup
After=default.target[Service]
ExecStart=/home/alvin/auto_run_script.sh[Install]
WantedBy=default.target

从服务的内容可以看出来,我们最终还是会调用 /home/alvin/auto_run_script.sh 这个脚本。

然后,我们再把这个脚本放置在 /etc/systemd/systerm/ 目录下,之后我们再运行下面两条命令来更新 systemd 配置文件,并启动服务。

$ systemctl daemon-reload
$ systemctl enable auto_run_script.service

万事俱备之后,我们就可以重启系统啦。

$ reboot


最后,最近很多小伙伴找我要Linux学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:

免费送给大家,只求大家金指给我点个赞!

电子书 | Linux开发学习路线图

也希望有小伙伴能加入我,把这份电子书做得更完美!

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 神器 | 支持搜索的资源网站

bat脚本如何自动输入y_Linux系统如何设置开机自动运行脚本?相关推荐

  1. 如何设置计算机自动连接宽带,Win7系统如何设置开机自动连接宽带?

    最近有Win7系统用户反映,每次电脑开机之后,都要手动点击宽带连接才能连网,觉得这样很麻烦.其实,我们是可以为自己的电脑设置开机自动连接宽带的.下面,小编就来教教大家Win7系统下设置开机自动连接宽带 ...

  2. 黑苹果html5视频卡顿,W7系统如何设置开机自动连接宽带

    最近有w7系统用户反映,每次电脑开机之后,都要手动点击宽带连接才能连网,觉得这样很麻烦.其实,我们是可以为自己的电脑设置开机自动连接宽带的.下面,小编就来教教大家w7系统下设置开机自动连接宽带的方法. ...

  3. 计算机开机怎么设置网络连接,win7系统如何设置开机自动连接宽带 设置宽带自动联网的办法...

    win7系统如何设置开机自动连接宽带 设置宽带自动联网的办法? win7如何设置开机自动连接宽带?如果用户手上没有可以进行宽带拨号的路由器,倒是可以使用计划任务自动连接网络,且这事会在计算机每次开机的 ...

  4. linux设置系统自动开机,Linux系统中设置开机自动运行的两种方法

    有时可能会需要在重启时或者每次系统启动时运行某些命令或者脚本.我们要怎样做呢?本文中我们就对此进行讨论. 我们会用两种方法来描述如何在 CentOS/RHEL 以及 Ubuntu 系统上做到重启或者系 ...

  5. 如何设置计算机自动连接宽带,Win10怎么设置开机自动连接宽带?设置宽带自动联网方法...

    Win10怎么设置开机自动连接宽带?如果用户手上没有可以进行宽带拨号的路由器,倒是可以使用计划任务自动连接网络,且这事会在计算机每次开机的时候进行,一般非网络连接出现问题,用户就可以不用自己手工拨号了 ...

  6. Linux系统如何设置开机自动运行脚本?

    点击上方"五分钟学算法",选择"星标"公众号 重磅干货,第一时间送达 在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务.在 Window ...

  7. outlook邮箱显示一直启动中_win10outlook邮箱怎么设置开机自动运行 - 卡饭网

    windows xp系统下如何设置开机自动运行程 windows xp系统下如何设置开机自动运行程 设置开机自动运行的步骤方法如下: 点击桌面左下角开始菜单,运行设置中的控制面板. 在打开的控制面板中 ...

  8. linux自动挂载win共享,在Deepin系统下实现开机自动挂载Windows系统共享盘的方法

    所要实现的目标:开机自动挂载Windows系统共享盘,所采用的操作系统:Deepin Linux.关于开机挂载网盘并不好,如果没有网络会卡住的问题,经过测试,下面介绍的方法及时是断网了也没有卡住. 前 ...

  9. xp系统电脑如何链接宽带连接服务器,WinXP设置开机自动宽带连接的方法

    WinXP系统的电脑上网都是要点宽带连接,进行拨号才可以上网的.在没有安装路由器的情况下,通常要先双击宽带连接,然后在点击连接按钮才能拨号上网,每次开机都是要点连接宽带,十分麻烦.那有没有什么办法,开 ...

最新文章

  1. Fortify 17.10进行源代码安全扫描的方法
  2. linux-常用命令-iostatvmstat
  3. 怎么制作升温曲线图_利用金字塔原理制作PPT,完整有逻辑
  4. Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合
  5. HDU 3278 Puzzle
  6. canny边缘检测算法 opencv_OpenCV-Python Canny边缘检测 | 十九
  7. 使用Mozilla Persona认证用户的指南
  8. matlab旋转机械转子故障信号仿真,旋转机械转子不对中故障诊断技术研究解说.docx...
  9. 【Python】实现最大最小距离算法
  10. 为什么iPhone 11在中国市场需求较美国强劲?真相扎心...
  11. 牛客网matlab怎么输入数据,从牛客上找的面经
  12. 学习react的网站
  13. 去除A和B数组中的交集
  14. 防御windows系统激活工具的后门入侵
  15. ie浏览器调用本地文件无反应_四种办法教你IE浏览器点击没反应,启动不了如何解决--系统之家...
  16. 关于使用GD32E230C SPI驱动SX1278遇到的坑
  17. 闲谈IPv6-聊聊IPv6端到端分段和MTU探测的问题
  18. Unity3D数字孪生开发笔记——网络篇
  19. influxDB快速入门实战教程
  20. 2017年总结2018年展望

热门文章

  1. 【神经网络】(16) MobileNetV3 代码复现,网络解析,附Tensorflow完整代码
  2. python中利用lxml模块解析xml文件报错XMLSyntaxError: Opening and ending tag mismatch
  3. leetcode-45 跳跃游戏II
  4. 修改ceph-disk源码,增加指定ceph.conf部署osd的功能
  5. s-sed替换或者修改文件指定行,同时匹配多个字符串,替换换行符为指定字符
  6. 设计1.0 -- iterator 和const_iterator底层的模拟实现
  7. 看雪CTF 2016_第八题分析
  8. 7.RabbitMQ RFC同步调用
  9. 久未更 ~ 一之 —— 关于ToolBar
  10. 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!...