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

在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.targe
[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下定时执行脚本

Linux下定时执行脚本今天做了个数据库的备份脚本,顺便系统得学习一下Linux下定时执行脚本的设置。

Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cron这个目录。

下面看一下具体的用法:首先查看一下/etc/crontab文件:$ cat /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly前四行是有关设置cron任务运行的环境变量。

SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),PATH变量定义了执行命令的路径。

Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。

如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。

执行命令或脚本时HOME变量可用来设置基目录。

文件/etc/crontab中每行任务的描述格式如下:minute hour day month dayofweek commandminute - 从0到59的整数hour - 从0到23的整数day - 从1到31的整数 (必须是指定月份的有效日期)month - 从1到12的整数 (或如Jan或Feb简写的月份)dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示) command - 需要执行的命令(可用as ls /proc >> /tmp/proc或执行自定义脚本的命令)root表示以root用户身份来运行run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本对于以上各语句,星号(*)表示所有可用的值。

Linux—添加开机启动(服务脚本)

Linux—添加开机启动(服务脚本)

Linux—添加开机启动(服务脚本)系统启动时需要加载的配置⽂件/etc/profile、/root/.bash_profile/etc/bashrc、/root/.bashrc/etc/profile.d/*.sh、/etc/profile.d/lang.sh/etc/sysconfig/i18n、/etc/rc.local(/etc/rc.d/rc.local)⼀、修改开机启动⽂件:/etc/rc.local(或者/etc/rc.d/rc.local)# 1.编辑rc.local⽂件[root@localhost ~]# vi /etc/rc.local# 2.修改rc.local⽂件,在 exit 0前⾯加⼊以下命令。

保存并退出。

/etc/init.d/mysqld start # mysql开机启动/etc/init.d/nginx start # nginx开机启动supervisord -c /etc/supervisor/supervisord.conf # supervisord开机启动/bin/bash /server/scripts/test.sh >/dev/null2>/dev/null# 3.最后修改rc.local⽂件的执⾏权限[root@localhost ~]# chmod +x /etc/rc.local[root@localhost ~]# chmod755 /etc/rc.local⼆、⾃⼰写⼀个shell脚本将写好的脚本(.sh⽂件)放到⽬录 /etc/profile.d/ 下,系统启动后就会⾃动执⾏该⽬录下的所有shell脚本。

三、通过chkconfig命令设置# 1.将(脚本)启动⽂件移动到 /etc/init.d/或者/etc/rc.d/init.d/⽬录下。

(前者是后者的软连接)mv /www/wwwroot/test.sh /etc/rc.d/init.d# 2.启动⽂件前⾯务必添加如下三⾏代码,否侧会提⽰chkconfig不⽀持。

开机自启动-AIX-Linux_HP-UX原理及配置

开机自启动-AIX-Linux_HP-UX原理及配置

AIX/etc/inittab init守护进程运行,init会打开/etc/inittab,并且执行里面的内容。

(文件部分内容)/etc/rc.d 是inittab里的一组脚本指向开机自动运行方法:1)直接修改inittab文件,使系统在开机重启时运行我们的命令。

2)通过rc.local启动rc.local是inittab里的一个脚本指向,果inittab文件里没有关于rc.local的信息,可以通过此命令创建脚本mkitab -i rcnfs "rc.local:2:once:/etc/rc.local > /dev/console 2>&1"touch /etc/rc.local #新建rc.local文件chmod 700 /etc/rc.local #设置执行权限执行脚本放到/etc/rc.local里之后,AIX系统在重新启动时,就会运行/etc/rc.local里的脚本了。

3)通过/etc/rc.d脚本启动(需要编写start\stop脚本)Linux/etc/inittab 这个文件设定了init进程怎样把系统引导成某种运行级别(不含服务启动脚本内容)(文件部分内容)Xinetd extended internet daemon 新一代网络守护进程服务,又叫超级internet服务器增强了一些网络访问控制功能。

/etc/init.d –> /etc/rc.d/init.d (软连接) 目录下为系统各服务启动脚本包括xinetd/etc/rc.d/rcn.d (n就是运行级0-6) /etc/rc.d/init.d下脚本用ln 命令连接到/etc/rc.d/rcn.d 目录redhat的启动方式和执行次序:1)加载内核2)执行init程序3)/etc/rc.d/rc.sysinit # 由init执行的第一个脚本4)/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式5)/etc/rc.d/rc.local #相应级别服务启动之后、在执行该文件6)/sbin/mingetty # 等待用户登录开机自动运行方法:1)在上面第4步中创建服务,在/etc/rc.d/init.d目录创建服务启动脚本。

如何实现linux下未登录和登录时自启动服务

如何实现linux下未登录和登录时自启动服务

如何实现linux下自启动服务如何在系统用户未登录前自启动嵌入自己所写的服务(可执行程序myftp)?这里介绍三种经我验证过的可行的办法:方法一: 编辑rc.local,在里面添加可执行所在路径vi /etc/rc.d/rc.local;进入编辑模式, 在该文件中添加/mnt/hgfs/su/myftp (/mnt/hgfs/su是文件存放路径可变);保存,重启ok;方法二: 可以把myftp的执行路径写到一个脚本中(su.sh)在脚本中添加命名/mnt/hgfs/su/myftp修改文件的执行权限chmodu+x su.sh再进入/etc/rc.d/rc.local中添加/mnt/hgfs/su/su.sh (/mnt/hgfs/su是文件存放路径可变)保存,重启方法三: 由于前面两个都要手动去更改去编辑rc.local下文本的内容,有些麻烦,如果用程序来实现更加麻烦,,所以推荐使下面这种方法.将myftp的执行路径写到一个脚本中(su.sh) 方法参照方法二但有一点需注意要将su.sh 里面的#!/bin/sh部分改为#!/bin/sh## chkconfig: 2345 97 00# description:myftp auto#(这个是运用chkconfig命令能识别并为该脚本建立软连接的保证)其中2345 代表服务可在哪个运行级别下启动,97代表软连接启动的序号;00 代表软连接关闭的序号( 序号低总比序号高的先执行)将su.sh拷贝到/etc/rc.d/init.d下命令: cp /mnt/hgfs/su/su.sh /etc/rc.d/init.d下chkconfig–add su.sh重启如何在系统用户登录后自启动自己所写的服务(可执行程序myftp)?用户登录时,bash首先自动执行系统管理员建立的全局登录script :/etc/profile。

然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、/.profile,但只执行最先找到的一个。

Linux中执行shell脚本命令的4种方法总结

Linux中执行shell脚本命令的4种方法总结

Linux中执⾏shell脚本命令的4种⽅法总结bash shell 脚本的⽅法有多种,现在作个⼩结。

假设我们编写好的shell脚本的⽂件名为hello.sh,⽂件位置在/data/shell⽬录中并已有执⾏权限。

⽅法⼀:切换到shell脚本所在的⽬录(此时,称为⼯作⽬录)执⾏shell脚本:复制代码代码如下:cd /data/shell./hello.sh./的意思是说在当前的⼯作⽬录下执⾏hello.sh。

如果不加上./,bash可能会响应找到不到hello.sh的错误信息。

因为⽬前的⼯作⽬录(/data/shell)可能不在执⾏程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。

查看PATH的内容可⽤ echo $PASH 命令。

现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执⾏。

⽅法⼆:以绝对路径的⽅式去执⾏bash shell脚本:复制代码代码如下:/data/shell/hello.sh⽅法三:直接使⽤bash 或sh 来执⾏bash shell脚本:复制代码代码如下:cd /data/shellbash hello.sh或复制代码代码如下:cd /data/shellsh hello.sh注意,若是以⽅法三的⽅式来执⾏,那么,可以不必事先设定shell的执⾏权限,甚⾄都不⽤写shell⽂件中的第⼀⾏(指定bash路径)。

因为⽅法三是将hello.sh作为参数传给sh(bash)命令来执⾏的。

这时不是hello.sh⾃⼰来执⾏,⽽是被⼈家调⽤执⾏,所以不要执⾏权限。

那么不⽤指定bash路径⾃然也好理解了啊,呵呵……。

⽅法四:在当前的shell环境中执⾏bash shell脚本:复制代码代码如下:cd /data/shell. hello.sh或复制代码代码如下:cd /data/shellsource hello.sh前三种⽅法执⾏shell脚本时都是在当前shell(称为⽗shell)开启⼀个⼦shell环境,此shell脚本就在这个⼦shell环境中执⾏。

linux_下的crontab如何使用

linux_下的crontab如何使用

linux 下的crontab如何使用crontab命令的功能是在一定的时间间隔调度一些命令的执行。

在/etc目录下有一个crontab 文件,这里存放有系统运行的一些调度程序。

每个用户可以建立自己的调度crontab。

cron 的主配置文件是/etc/crontab,它包括下面几行:SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly前四行是用来配置cron 任务运行环境的变量。

SHELL 变量的值告诉系统要使用哪个shell 环境(在这个例子里是bash shell);PATH 变量定义用来执行命令的路径。

cron 任务的输出被邮寄给MAILTO 变量定义的用户名。

如果MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。

HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

/etc/crontab 文件中的每一行都代表一项任务,它的格式是:minute hour day month day_of_week commandminute —分钟,从0 到59 之间的任何整数hour —小时,从0 到23 之间的任何整数day —日期,从1 到31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)month —月份,从1 到12 之间的任何整数(或使用月份的英文简写如jan、feb 等等)dayofweek —星期,从0 到7 之间的任何整数,这里的0 或7 代表星期日(或使用星期的英文简写如sun、mon 等等)command —要执行的命令(命令可以是ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。

linux设定定时执行任务_oracle,arcGIS-精选

Linux 设定定时执行任务说明一、编写定时执行时的命令1) 将需要定时执行的命令写入.sh 文件。

例如:停止weblogic 服务。

编写autoStop.sh 如下:su - w eblogic -c '/usr/weblogic103/user_projects/domains/base_domain/bin/stopWebLogic.sh '启动weblogic 服务。

编写autoStart.sh 如下:su -weblogic -c '/usr/weblogic103/user_projects/domains/base_domain/startWebLogic.sh '其中:weblogic 为安装weblogic 时创建的用户。

weblogic 服务必须使用安装时创建的用户启动。

/usr/weblogic103/user_projects/domains/base_domain/startWebLogic.sh 为weblogic 启动命令所在的路径。

其他su 的参数请参考附录之“1)su 命令的使用”来了解深入。

2) autoStart.sh ,autoStop.sh 必须有被执行的权限。

root 用户登录,执行下列命令。

chmod a+x autoStop.shchmod a+x autoStart.sh3) oracle 服务启动,编写批处理文件autoStart.sh 如下:export ORACLE_HOME=/u01/oracle/product/10.2.0/db_1 // 设置oracle_homeexport PATH=$ORACLE_HOME/bin:/usr/sbin:$PATHsu - oracle //oracle 为安装oralce 时创建的用户名sqlplus /nologconnect / as sysdbalsnrctl startstartupexitexit停止oracle 服务,编写批处理文件autoStop.sh 如下:export ORACLE_HOME=/u01/oracle/product/10.2.0/db_1 // 设置oracle_homeexport PATH=$ORACLE_HOME/bin:/usr/sbin:$PATHsu - oracle //oracle 为安装oralce 时创建的用户名sqlplus /nologconnect / as sysdbashutdown immediatelsnrctl stopexitexit4) ArcGIS 服务的启动也类似。

Linux系统自动化运维脚本使用Shell脚本实现对Linux系统运维工作的自动化执行

Linux系统自动化运维脚本使用Shell脚本实现对Linux系统运维工作的自动化执行Linux系统的运维工作对于系统管理员来说是非常繁琐而重要的,为了提高效率和减少人为错误,自动化运维脚本被广泛使用。

而Shell脚本则是一种强大的工具,可以通过编写脚本来实现对Linux系统的自动化运维工作。

本文将通过介绍Shell脚本的基本用法和示例,探讨如何使用Shell脚本来实现对Linux系统的自动化运维。

一、Shell脚本的基本概念和用法Shell是一种命令行解释器,常用的有Bash、Csh、Ksh等。

Shell脚本是一系列Shell命令的集合,可以通过编写脚本来实现对系统的自动化操作。

下面是一些Shell脚本的基本用法:1. Shebang每个Shell脚本的第一行都需要指定Shebang,即告诉系统使用哪种Shell执行该脚本。

常见的Shebang是#!/bin/bash。

2. 变量的定义和使用Shell脚本使用变量可以方便地存储和操作数据。

变量的定义格式为:变量名=值,例如:name="John"。

使用变量时需要在变量名前加上美元符号,例如:echo $name。

3. 条件语句可以使用条件语句来实现根据条件执行不同的操作。

常见的条件语句有if语句和case语句。

例如:```if [ $num -gt 10 ]; thenecho "The number is greater than 10."fi``````case $fruit in"apple")echo "It's an apple.";;"orange")echo "It's an orange.";;*)echo "Unknown fruit.";;esac```4. 循环语句循环语句可以用来重复执行一段代码。

Linux服务器自动化部署的Python脚本

Linux服务器自动化部署的Python脚本自动化部署是现代软件开发的常见需求之一,尤其对于Linux服务器的部署来说,使用Python脚本可以节省时间、提高效率。

本文将介绍如何使用Python编写脚本来实现Linux服务器的自动化部署。

一、概述在开始编写脚本之前,我们首先需要明确自动化部署的目标和要求。

在现代软件开发中,常见的自动化部署需求包括:代码拉取,环境配置,依赖安装,启动服务等。

我们的脚本将以这些需求为基础,实现一个简单而高效的服务器部署系统。

二、准备工作在开始编写脚本之前,我们需要确保以下准备工作已经完成:1. 安装Python环境:确保服务器上已经安装了Python解释器。

2. 创建虚拟环境:使用Python的虚拟环境可以隔离不同项目的依赖关系,确保项目的纯净性。

3. 安装必要的库:根据项目需求,安装所需的第三方库,例如Fabric, Paramiko等。

4. 配置SSH密钥:为了实现远程执行命令,我们需要设置服务器之间的SSH密钥认证。

三、编写脚本接下来,我们将从代码拉取、环境配置、依赖安装、启动服务四个方面,编写自动化部署的Python脚本。

1. 代码拉取为了实现代码的自动拉取,我们可以使用Git来进行版本控制。

在脚本中执行如下代码可以实现代码的拉取:```pythonimport osdef clone_code(repo_url, directory):os.system(f"git clone {repo_url} {directory}")```2. 环境配置在Linux服务器上进行自动化部署时,环境配置是一个重要的步骤。

我们可以使用Python的ConfigParser库来读取配置文件,并在脚本中执行相关操作。

```pythonimport configparserdef configure_environment(config_file):config = configparser.ConfigParser()config.read(config_file)# 执行环境配置操作# ...```3. 依赖安装依赖安装是服务器部署的一个关键步骤。

Linux启动脚本

Linux启动流程详解从用户打开电源到用户可以登录的这短短的一段时间内,Red Hat Enterprise Linux到底都作了哪些事情,只有知道了这些事情,用户在以后的使用过程中,如果出现了一些问题,我们可以借助这些过程来为我们排除一些故障。

Red Hat Enterprise Linux在电脑的启动阶段,一共经历以下两个阶段BIOS自检当电脑开机的时候,电脑会进入BIOS,BIOS的工作主要是侦测电脑的周边配套设备是否工作正常,如CPU的类型、速度、缓存等主板类型内存的速度,容量硬盘的大小,类型和工作模式风扇速度等主要是为了检查这些设备在开机的时候是否能通过检测,如果能通过检测,说明电脑可以正常的工作。

------------------------------载入启动程序BIOS自检完成后,BIOS会根据用户设置的启动顺序来由那个设备来启动电脑的操作系统,这个设备一般是硬盘。

也就是进入到硬盘的MBR区域,这个区域中的有512个字节的大小,其中前446个字节中保存的程序是选择启动分区,也就是电脑由那个硬盘分区来载入开机的程序。

那么在这个446个字节的空间中保存的就是启动程序,然后由这个小程序来加载存储在其他位置的操作系统,也就是启动grub程序。

grub程序的这个配置文件是保存在:/boot/grun/grub.conf这个文件中,如果修改完这个文件后,设置会立刻生效。

现在来看看这个文件的内容以及语法: 使用cat /boot/grub/grub.conf,就会出现这个文件的内容,最前面是注释。

可以将这个文件逻辑上分为两个部分,第一个部分是基本设定,第二个部分是区分开多个操作系统的设定。

第一个部分中的defaule=0,是指第一组操作系统开机。

如果有两组操作系统的开机设定,而defaule=1,那么预设使用第二组操作系统开机。

所谓 第一组和第二组程序就是指的是title开始的部分,这里是区分操作系统的部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档