首页 > 系统相关 >详解在 Linux 启动时,如何自动执行命令或脚本

详解在 Linux 启动时,如何自动执行命令或脚本

时间:2023-06-20 10:24:18浏览次数:66  
标签:脚本 执行命令 启动 Linux cron 详解 rc home

我一直很好奇,在启动 Linux 系统并登录的过程中到底发生了什么事情。按下开机键或启动一个虚拟机,你就启动了一系列事件,之后会进入到一个功能完备的系统中,有时,这个过程不到一分钟。当你注销或者关机时,也是这样。

详解在 Linux 启动时,如何自动执行命令或脚本详解在 Linux 启动时,如何自动执行命令或脚本

我一直很好奇,在启动 Linux 系统并登录的过程中到底发生了什么事情。按下开机键或启动一个虚拟机,你就启动了一系列事件,之后会进入到一个功能完备的系统中,有时,这个过程不到一分钟。当你注销或者关机时,也是这样。

更有意思的是,在系统启动以及用户登录或注销时,还可以让系统执行特定的操作。

本文,我们将探讨一下在 Linux 操作系统中实现这些目标的传统方法。

注意:我们假定使用的是 Bash 作为登录及注销的主 Shell。如果你使用的是其他 Shell,那么有些方法可能会无效。如果有其他的疑问,请参考对应的 Shell 文档。

在启动时执行 Linux 脚本

有两种传统的方法可以实现在启动时执行命令脚本

方法 #1 - 使用 cron 任务

除了常用格式(分 / 时 / 日 / 月 / 周)外,cron 调度器还支持 @reboot 指令。这个指令后面的参数是脚本(启动时要执行的那个脚本)的绝对路径。然而,这种方法需要注意两点:

  • a) cron 守护进程必须处于运行状态(通常情况下都会运行),同时
  • b) 脚本或 crontab 文件必须包含需要的环境变量(如果有的话,参考 StackOverflow 获取更多详细内容)。
方法 #2 - 使用 /etc/rc.d/rc.local

这个方法对于 systemd-based 发行版 Linux 同样有效。不过,使用这个方法,需要授予/etc/rc.d/rc.local文件执行权限:

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

然后在这个文件底部添加脚本。

下图说明如何分别使用 cron 任务和 rc.local 运行两个示例脚本(/etc/rc.d/rc.local/home/gacanepa/script1.sh 和/home/gacanepa/script2.sh)。
script1.sh:

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt

script2.sh:

#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

详解在 Linux 启动时,如何自动执行命令或脚本详解在 Linux 启动时,如何自动执行命令或脚本

*启动时执行 Linux 脚本 *

记住,一定要提前给两个示例脚本授予执行权限:

$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh
在登录或注销时执行 Linux 脚本

要在登录或注销时执行脚本,分别需要使用~.bash_profile和~.bash_profile文件。多数情况下,后者需要手动创建。在每个文件的底部,添加调用脚本代码,如前面例中所示,就可以实现这个功能。

总结

本文主要介绍如何在启动、登录以及注销系统时执行脚本。


via: http://www.tecmint.com/auto-execute-linux-scripts-during-reboot-or-startup/

作者:Gabriel Cánepa 译者:zhb127 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

原文来自:https://linux.cn/article-8286-1.html

本文地址:https://www.linuxprobe.com/linux-cron-shell.html编辑员:张雄,审核员:逄增宝

本文原创地址:https://www.linuxprobe.com/linux-cron-shell.html

标签:脚本,执行命令,启动,Linux,cron,详解,rc,home
From: https://www.cnblogs.com/linuxpro/p/17492894.html

相关文章

  • 注重隐私安全以及方便运行 Windows 程序的发行版:Robolinux
    导读Robolinux 是一个基于最新的Ubuntu长期支持版本的Linux发行版,它使用Ubuntu20.04,22.04等LTS的源代码从零开始构建,注重隐私和安全以及高生产力,2023年5月更新了其最新版本 RobolinuxR12。该项目的一个更有趣的特点是提供了一个预配置的虚拟机支持包,其中包含......
  • C++ 数据类型转换详解之终极无惑
    程序开发环境:VS2017+Win32+Debug文章目录1.隐式数据类型转换2.显示数据类型转换3.C++新式类型转换3.1const_cast3.2static_cast3.3dynamic_cast3.3.1向下转换3.3.2交叉转换3.4reinterpret_cast4.重载相关类型转换操作符4.1不同类对象的相互转换4.2基本数据类型与类对象......
  • 更改centos linux 7ip地址的shell语句
    #!/bin/sh#autoChangeipnetmaskgatewayscripts#chenhao2023-06-17cat<<EOF++++++++自动:修改ip和主机名等相关信息+++++++++ETHCONF=/etc/sysconfig/network-scripts/ifcfg-ens33HOSTS=/etc/hostsNETWORK=/etc/sysconfig/networkDIR=/data/backup/`date+%Y%......
  • Linux-快速搭建sftp服务
    一、添加用户组sftpgroupaddsftpcat/etc/group[root@testdata]#pwd/home/data[root@testdata]#cat/etc/groupsftp:x:1003:二、创建用户mysftp//创建用户到用户组,并禁止登录[root@testdata]#useradd-gsftp-s/bin/falsemysftp//查看用户cat/etc/passwd //修改密......
  • 【web开发】PHP命名空间中的子空间和公共空间详解及相关术语解读
    前言PHP的命名空间和文件系统的结构很像,文件夹可以有子文件夹,命名空间中也可以定义子空间来描述各个空间之间的所属关系。比如:cart购物车和order订单这两个模块都处于同一个shop商城项目内,通过命名空间子空间表达关系的:<?phpnamespaceshop\cart;classDemo{ //类的成员}name......
  • CMU15445 (Fall 2020) 数据库系统 Project#4 - Concurrency Control 详解
    前言一个合格的事务处理系统,应该具备四个性质:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。隔离性保证了一个活跃的事务(还没提交或者回滚)对数据库所做的系统对于其他的活跃事务是不可见的,看起来就像某一时刻就只有一个事务在操作数据库。然而完美的......
  • 万字详解常用设计模式
    本文是博主在工作中对常用设计模式的使用经验总结归纳而来分享给大家。设计模式一共有23种,本文讲解涉及如下:责任链模式模板方法模式发布订阅模式策略模式三大分类业界一般将设计模式分为三大类:创建型模式:对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象......
  • Linux环境下I2C应用程序编写
    原文:https://blog.csdn.net/propor/article/details/129667596本文介绍Linux环境下,对I2C设备进行操作。在对I2C总线进行操作时,可采用i2c-tools对I2C进行查看及操作,待通过工具可对I2C进行操作后,再编写程序进行操作。1.i2c-tools的使用1)安装sudoaptinstalli2c-tools2)查询......
  • BCH码与RS码详解
    本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:<https://github.com/timerring/information-theory>】或者公众号【AIShareLab】回复信息论获取。BCH码-循环码特点:它的生成多项式g(x)与最小码距之间有密切的关......
  • 《Linux命令行与shell脚本编程大全》研读笔记
    目录命令总结进程相关环境变量相关第六章Linux环境变量命令总结进程相关命令名称作用举例psProcessStatus,用来列出系统中当前运行的那些进程ps-ftop动态地显示进程信息top环境变量相关命令名称作用举例env列出全局环境变量env......