详解在 Linux 启动时,如何自动执行命令或脚本
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 启动时,如何自动执行命令或脚本相关推荐
- 19. linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解
linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解 文章目录 Linux权限位 读写执行 三种权限真正含义和作用 权限对文件的作用 权限对目录的作用 示例 chmod 使用数 ...
- Linux开机后自动执行命令或脚本
文章目录 说明 应用场景 涉及文件 步骤 1.添加开机执行指令 2.编写脚本 3.测试效果 自动化编辑工具 脚本 效果 已存在的脚本 不存在的脚本 说明 应用场景 应用场景:开机后自动执行命令或脚本 ...
- SpringBoot启动时实现自动执行代码的几种方式讲解
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u011291072/article/ details/81813662 前言 目前开发的SpringBoot项目在启动的时候需 ...
- 介绍Spring Boot 启动时,自动执行指定方法的 7 种方法
目录 前言 实现方式 1.实现ServletContextListener接口contextInitialized方法 2.静态代码块方式 3.@PostConstruct注解方式 4. 实现Serv ...
- mysql errmsg unknown_详解MySQL Server 启动时出现bug的解决方法
在用的mysql Server 无法启动.日志如下: 复制代码 代码示例: 130507 12:22:11 mysqld started 130507 12:22:11 [Warning] opti ...
- linux启动 profile,Linux 启动时profile、bashrc、~/.bash_profile、~/.bashrc、~/.bash_profile执行顺序以及文件说明...
Linux 启动时profile.bashrc.~/.bash_profile.~/.bashrc.~/.bash_profile执行顺序以及文件说明 一.执行顺序 登录linux时,/etc/pro ...
- linux执行命令脚本,Linux - 执行命令与脚本
01 - Linux执行多条命令 方法1:在命令行下可以一次性粘贴多条语句,shell会依次执行并输出结果 方法2:在一个命令行中,用分号将各个命令隔开或者使用&&连接各个命令 示例: ...
- windows 7编辑启动菜单 bcdedit linux,bcdedit用法详解 windows7/vista启动修改
bcdedit用法详解 windows7/vista启动修改 (2010-09-11 19:27:28) 标签: 杂谈 bcdedit用法详解 在Vista/2008下,我们通过msconfig的&q ...
- linux 卡在grub_详解ubuntu双系统启动时卡死解决办法
ubuntu双系统启动时卡死解决办法(在ubuntu16.04和18.04测试无误) 问题描述: 在安装完ubuntu双系统后,第一次启动ubuntu系统时,卡死在启动界面(或者黑屏),这大概都是由于 ...
最新文章
- java dom4 引入_java – 使用dom4j从节点获取属性值
- 2021年5个优秀人工智能框架
- spark shuffle的写操作之准备工作
- python iter next_python类中的__iter__, __next__与built-in的iter()函数举例
- sdk怎么用_PLC不支持OPC UA怎么办?别问了看完你就懂了
- Futter基础第7篇: 实现底部导航
- ak330s 置换内外sd
- QQ音乐MV/腾讯视频下载教程
- 昆仑通态触摸屏与西门子PLC1200通信,读取DB块数据
- C语言实现三种死循环
- JAVA爬虫天眼查、启信宝...企业信息查询网站
- 基础汇编语言程序设计
- 正态分布某一点的概率怎么算_统计基础篇之十三:怎么理解正态分布(二)
- 大屏互动-大屏交互-大屏投影技术解决方案
- Mysql的索引为什么使用B+树而不使用跳表?
- ML:从工程化思维分析—机器学习团队十大角色的简介(背景/职责/产出物):产品经理、项目经理、业务咨询顾问、数据科学家、ML研究员、数据工程师、ML工程师、DevOps/软件开发/交付工程师
- 转:创业之路“一生悬命”---只有偏执狂才能生存
- 华为是怎样研发的(9)——测试
- sorted与.sort函数及sorted对字典或列表进行排序
- 宝塔linux 4g2h优化方案,5G优化案例:5G NSA组网下4G锚点基站X2配置优化研究方案案例.docx...