你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在 Linux 系统下如何设置开机启动呢?

[复制链接]
gaosmile 发布时间:2020-6-11 21:50
在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务。在 Windows 下,我们有很多方法可以设置开机启动,但在 Linux 系统下我们需要如何操作呢?
Linux 下同样可以设置开机启动,但可能需要我们敲一些命令(可能也有 UI 界面的设置方法,但我不熟,我更多是玩命令)。下面我们就介绍三种简单但可行的开机启动设置方法。
  方法一:修改 /etc/rc.d/rc.local 文件  

8 A  T( i2 E- Y# S. f# |
  T3 e4 K* c) B
/etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话,可以将自己脚本路径加到该文件里。
但是,首先需要确认你有运行这个文件的权限。
$ chmod +x /etc/rc.d/rc.local
! A7 J) i4 q) e2 T  }
为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。
$ vim auto_run_script.sh
% c+ w9 I  @: _
1 M5 ]! ?/ V% B0 |/ B#!/bin/bash
. [) B0 h: a5 J( [( J6 [1 Kdate >> /home/alvin/output.txt" e  \9 j7 ]9 M- J
hostname >> /home/alvin/output.txt
& r" h% H# U; Y6 r# \+ Y  q% a
保存退出后,再给它赋予可执行权限:
$ chmod +x auto_run_script.sh
0 W6 ?3 K  N' }0 D; m
然后,我们再将脚本添加到 /etc/rc.d/rc.local 文件最后一行:
$ vim /etc/rc.d/rc.local6 h1 s5 ~# ^' s
# j2 E  `3 c& |* d3 h
/home/alvin/auto_run_script.sh
, a/ H( Q5 Q" l; E1 X
接下来,我们就可以试试效果了。直接重启系统就可以了:
$ sudo reboot
3 p: h% m4 |7 h
重启之后,就会在家目录下看到脚本执行的结果了。
微信图片_20200611213823.jpg
" [* o+ P+ i% a- K
  方法二:使用 crontab  

/ c! J' y+ f2 O( @% k" N
大家知道,crontab 是 Linux 下的计划任务,当时间达到我们设定的时间时,可以自动触发某些脚本的运行。
我们可以自己设置计划任务时间,然后编写对应的脚本。但是,有个特殊的任务,叫作 @reboot ,我们其实也可以直接从它的字面意义看出来,这个任务就是在系统重启之后自动运行某个脚本。
那它将运行的是什么脚本呢?我们如何去设置这个脚本呢?我们可以通过 crontab -e 来设置。
$ crontab -e
; k' c6 i" ?, K8 e- l! h* b' ?0 m9 ?) F: w% A7 c# \2 s
@reboot /home/alvin/auto_run_script.sh

+ w# l5 T1 {1 t( F5 g0 p
然后,直接重启即可。运行的效果跟上面类似。
  方法三:使用 systemd 服务  
$ E+ a6 L6 N( X: n& B5 M
以上介绍的两种方法,在任何 Linux 系统上都可以使用。但本方法仅适用于 systemd 系统。如何区分是不是 systemd 系统?很简单,只需运行 ps aux 命令,查看 pid 为 1 的进程是不是 systemd 。
微信图片_20200611213827.jpg
为了实现目的,我们需要创建一个 systemd 启动服务,并把它放置在 /etc/systemd/system/ 目录下。
我们创建的 systemd 启动服务如下。请注意,这时后缀是 .service ,而不是 .sh 。
$ vim auto_run_script.service% @6 ?! U, a, I
+ i+ [/ u2 c6 y( A
[Unit]
& W6 }8 C7 s; h+ B7 X0 YDescription=Run a Custom Script at Startup
: {3 K0 b" W5 B- fAfter=default.target
3 ?& e. o) Q, l% f
* m7 A1 d4 G3 F! q9 {' i[Service]+ a6 o6 d' o, E  O' Y/ ~5 h8 ^
ExecStart=/home/alvin/auto_run_script.sh
+ I9 V+ }( ], P4 e
4 l1 K- V' r4 e9 p4 C[Install]2 Y! F( B3 v% Q7 L4 k
WantedBy=default.target

  a: T( T* A4 R& f$ T& T& X' _
从服务的内容可以看出来,我们最终还是会调用 /home/alvin/auto_run_script.sh 这个脚本。
然后,我们再把这个脚本放置在 /etc/systemd/systerm/ 目录下,之后我们再运行下面两条命令来更新 systemd 配置文件,并启动服务。
$ systemctl daemon-reload
, Z; O; R7 M  h) X! Y$ systemctl enable auto_run_script.service
3 X2 b3 P: ]. }8 s; Q% j
万事俱备之后,我们就可以重启系统啦。
$ reboot
7 Z3 J) j3 t& o+ i5 F7 ^3 q# d
赞 收藏 评论1 发布时间:2020-6-11 21:50

举报

1个回答
李康1202 回答时间:2020-6-12 08:58:56
顶一顶: {% Z* ^! B% A: [6 P
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版