2019独角兽企业重金招聘Python工程师标准>>>

我一直很好奇,在启动 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 脚本 *

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

$ 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

本文地址:http://www.linuxprobe.com/linux-cron-shell.html

转载于:https://my.oschina.net/u/3308739/blog/870472

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

  1. 19. linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解

    linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解 文章目录 Linux权限位 读写执行 三种权限真正含义和作用 权限对文件的作用 权限对目录的作用 示例 chmod 使用数 ...

  2. Linux开机后自动执行命令或脚本

    文章目录 说明 应用场景 涉及文件 步骤 1.添加开机执行指令 2.编写脚本 3.测试效果 自动化编辑工具 脚本 效果 已存在的脚本 不存在的脚本 说明 应用场景 应用场景:开机后自动执行命令或脚本 ...

  3. SpringBoot启动时实现自动执行代码的几种方式讲解

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u011291072/article/ details/81813662 前言 目前开发的SpringBoot项目在启动的时候需 ...

  4. 介绍Spring Boot 启动时,自动执行指定方法的 7 种方法

    目录 前言 实现方式 1.实现ServletContextListener接口contextInitialized方法 2.静态代码块方式 3.@PostConstruct注解方式 4. 实现Serv ...

  5. mysql errmsg unknown_详解MySQL Server 启动时出现bug的解决方法

    在用的mysql Server 无法启动.日志如下: 复制代码 代码示例: 130507 12:22:11  mysqld started 130507 12:22:11 [Warning] opti ...

  6. linux启动 profile,Linux 启动时profile、bashrc、~/.bash_profile、~/.bashrc、~/.bash_profile执行顺序以及文件说明...

    Linux 启动时profile.bashrc.~/.bash_profile.~/.bashrc.~/.bash_profile执行顺序以及文件说明 一.执行顺序 登录linux时,/etc/pro ...

  7. linux执行命令脚本,Linux - 执行命令与脚本

    01 - Linux执行多条命令 方法1:在命令行下可以一次性粘贴多条语句,shell会依次执行并输出结果 方法2:在一个命令行中,用分号将各个命令隔开或者使用&&连接各个命令 示例: ...

  8. windows 7编辑启动菜单 bcdedit linux,bcdedit用法详解 windows7/vista启动修改

    bcdedit用法详解 windows7/vista启动修改 (2010-09-11 19:27:28) 标签: 杂谈 bcdedit用法详解 在Vista/2008下,我们通过msconfig的&q ...

  9. linux 卡在grub_详解ubuntu双系统启动时卡死解决办法

    ubuntu双系统启动时卡死解决办法(在ubuntu16.04和18.04测试无误) 问题描述: 在安装完ubuntu双系统后,第一次启动ubuntu系统时,卡死在启动界面(或者黑屏),这大概都是由于 ...

最新文章

  1. java dom4 引入_java – 使用dom4j从节点获取属性值
  2. 2021年5个优秀人工智能框架
  3. spark shuffle的写操作之准备工作
  4. python iter next_python类中的__iter__, __next__与built-in的iter()函数举例
  5. sdk怎么用_PLC不支持OPC UA怎么办?别问了看完你就懂了
  6. Futter基础第7篇: 实现底部导航
  7. ak330s 置换内外sd
  8. QQ音乐MV/腾讯视频下载教程
  9. 昆仑通态触摸屏与西门子PLC1200通信,读取DB块数据
  10. C语言实现三种死循环
  11. JAVA爬虫天眼查、启信宝...企业信息查询网站
  12. 基础汇编语言程序设计
  13. 正态分布某一点的概率怎么算_统计基础篇之十三:怎么理解正态分布(二)
  14. 大屏互动-大屏交互-大屏投影技术解决方案
  15. Mysql的索引为什么使用B+树而不使用跳表?
  16. ML:从工程化思维分析—机器学习团队十大角色的简介(背景/职责/产出物):产品经理、项目经理、业务咨询顾问、数据科学家、ML研究员、数据工程师、ML工程师、DevOps/软件开发/交付工程师
  17. 转:创业之路“一生悬命”---只有偏执狂才能生存
  18. 华为是怎样研发的(9)——测试
  19. sorted与.sort函数及sorted对字典或列表进行排序
  20. 宝塔linux 4g2h优化方案,5G优化案例:5G NSA组网下4G锚点基站X2配置优化研究方案案例.docx...

热门文章

  1. weblogic从入门到起飞(nodemanager)(五)
  2. Flutter 如何禁止手机横屏[Flutter专题62]
  3. 有关windows 10自动更新 永久关闭
  4. 听说别人都在送小黄车月卡?神策数据送两个月!
  5. php 操作json的各种格式
  6. win linux 装系统 通过 u盘
  7. 人们对大数据的几点误解
  8. navigator.userAgent 取值都带有Mozill的原因。看完我笑了
  9. 转 Struct 和 Union区别 以及 对内存对齐方式的说明
  10. 高级特性(2)- XML