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—添加开机启动(服务脚本)系统启动时需要加载的配置⽂件/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/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下自启动服务如何在系统用户未登录前自启动嵌入自己所写的服务(可执行程序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种⽅法总结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如何使用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开始的部分,这里是区分操作系统的部分。
安装linux系统后修改默认开机启动项
安装linux系统后修改默认开机启动项在安装linux系统后,开机的时候默认启动项变成了linux,这让许多经常使⽤windows系统的同学感到抓狂:按下电源键后,打开⼿机,刷刷微博,看看朋友圈,再抬头⼀看,⾯对输⼊密码界⾯,只好再次选择重启。
那么如何修改默认的开机启动项呢?我们需要做的是修改GRUB这个东东。
步骤(以Ubuntu系统为例):1.进⼊系统,开机时注意观察你的windows系统在开机启动项中是第⼏项,当系统开启后打开终端。
(⽅法⾃⾏百度)2.在终端中输⼊“sudo gedit /etc/default/grub”,打开grub这个档案。
3.在⽂档⾥找到“GRUB_DEFAULT=0”这⼀⾏(也有可能不是0),如果开机时windows系统是第n项,则把这个0改为n-1(因为序号是从0开始的)。
然后保存退出。
什么?没法保存?看看步骤2的时候是不是没有输⼊sudo。
4.在终端中继续输⼊“sudo update-grub”,回车,等待若⼲秒。
5。
重启看看⾏不⾏。
注释:⼀.开机流程(摘⾃鸟哥)1. 加载 BIOS 的硬件信息与进⾏⾃我测试,并依据设定取得第⼀个可开机的装置;2. 读取并执⾏第⼀个开机装置内 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序);(我们要修改的地⽅)3. 依据 boot loader 的设定加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序;4. 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,⽽ init 会取得 run-level 信息;5. init 执⾏ /etc/rc.d/rc.sysinit 档案来准备软件执⾏的作业环境 (如⽹络、时区等);6. init 执⾏ run-level 的各个服务之启动(script ⽅式);7. init 执⾏ /etc/rc.d/rc.local 档案;8. init 执⾏终端机仿真程序 mingetty 来启动 login 程序,最后就等待⽤户登⼊啦;⼆.sudo的⽤法sudo 执⾏命令的流程是当前⽤户切换到root(或其它指定切换到的⽤户),然后以root(或其它指定的切换到的⽤户)⾝份执⾏命令,执⾏完成后,直接退回到当前⽤户;⽽这些的前提是要通过sudo的配置⽂件/etc/sudoers来进⾏授权;当我们没有权限进⾏⼀些动作时,可以尝试使⽤ sudo 命令。
linux服务方式启动程序脚本(init.d脚本)
linux服务⽅式启动程序脚本(init.d脚本)这才是真正正确的让jar后台启动的脚本,⽹络上的各种nohoup的脚本都是临时执⾏⼀次任务⽤的。
#!/bin/sh## init.d script##### BEGIN INIT INFO# Provides: mongodb# Required-Start: $network $local_fs $remote_fs# Required-Stop: $network $local_fs $remote_fs# Should-Start: $named# Should-Stop:# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: An object/document-oriented database# Description: MongoDB is a high-performance, open source, schema-free# document-oriented data store that's easy to deploy, manage# and use. It's network accessible, written in C++ and offers# the following features:# .# * Collection oriented storage - easy storage of object-# style data# * Full index support, including on inner objects# * Query profiling# * Replication and fail-over support# * Efficient storage of binary data including large# objects (e.g. videos)# * Auto-sharding for cloud-level scalability (Q209)# .# This package is build with V8 JavaScript engine.# .# High performance, scalability, and reasonable depth of# functionality are the goals for the project.### END INIT INFODAEMON=/usr/local/jdk1.8.0_40/bin/javaOPTION=-jarVAR=/usr/local/danabang.storage/danabang.storage.jarDESC=danabang.storage# Default defaults. Can be overridden by the /etc/default/$NAMENAME=danabang.storagePIDFILE=/var/data/danabang.storage/log/$NAME.pidRUNAS=tangruiif test ! -x $DAEMON; thenecho "Could not find $DAEMON"exit 0fi. /lib/lsb/init-functionsSTARTTIME=1DIETIME=10 # Time to wait for the server to die, in seconds# If this value is set too low you might not# let some servers to die gracefully and# 'restart' will not workrunning_pid() {# Check if a given process pid's cmdline matches a given namepid=$1name=$2[ -z "$pid" ] && return 1[ ! -d /proc/$pid ] && return 1cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`# Is this the expected server[ "$cmd" != "$name" ] && return 1return 0}running() {# Check if the process is running looking at /proc# (works for all users)# No pidfile, probably no daemon present[ ! -f "$PIDFILE" ] && return 1pid=`cat $PIDFILE`running_pid $pid $DAEMON || return 1return 0}start_server() {# Start the process using the wrapperstart-stop-daemon --background --start --quiet --pidfile $PIDFILE \ --make-pidfile --chuid $RUNAS \--exec $DAEMON -- $OPTION $VARerrcode=$?return $errcode}stop_server() {# Stop the process using the wrapperstart-stop-daemon --stop --quiet --pidfile $PIDFILE \--user $RUNAS \--exec $DAEMONerrcode=$?return $errcode}force_stop() {# Force the process to die killing it manually[ ! -e "$PIDFILE" ] && returnif running ; thenkill -15 $pid# Is it really dead?sleep "$DIETIME"sif running ; thenkill -9 $pidsleep "$DIETIME"sif running ; thenecho "Cannot kill $NAME (pid=$pid)!"exit 1fififirm -f $PIDFILE}case "$1" instart)log_daemon_msg "Starting $DESC" "$NAME"# Check if it's running firstif running ; thenlog_progress_msg "apparently already running"log_end_msg 0exit 0fiif start_server ; then# NOTE: Some servers might die some time after they start,# this code will detect this issue if STARTTIME is set# to a reasonable value[ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time if running ; then# It's ok, the server started and is runninglog_end_msg 0else# It is not running after we did startlog_end_msg 1fielse# Either we could not start itlog_end_msg 1fi;;stop)log_daemon_msg "Stopping $DESC" "$NAME"if running ; then# Only stop the server if we see it runningerrcode=0stop_server || errcode=$?log_end_msg $errcodeelse# If it's not running don't do anythinglog_progress_msg "apparently not running"log_end_msg 0exit 0fi;;force-stop)# First try to stop gracefully the program$0 stopif running; then# If it's still running try to kill it more forcefullylog_daemon_msg "Stopping (force) $DESC" "$NAME"errcode=0force_stop || errcode=$?log_end_msg $errcodefi;;restart|force-reload)log_daemon_msg "Restarting $DESC" "$NAME"errcode=0stop_server || errcode=$?# Wait some sensible amount, some server need this[ -n "$DIETIME" ] && sleep $DIETIMEstart_server || errcode=$?[ -n "$STARTTIME" ] && sleep $STARTTIMErunning || errcode=$?log_end_msg $errcode;;status)log_daemon_msg "Checking status of $DESC" "$NAME"if running ; thenlog_progress_msg "running"log_end_msg 0elselog_progress_msg "apparently not running"log_end_msg 1exit 1fi;;*)N=/etc/init.d/$NAMEecho "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2 exit 1;;esacexit 0。
linux关机触发脚本
实现linux在关机或重启的时候执行某个任务。
现在把实现过程描述如下:先写一个脚本放在/etc/rc.d/init.d下,chmod -f 777 ,再ln -s 到/etc/rc.d/rc0.d/K01脚本名与/etc/rc.d/rc6.d/K01脚本名,同时也要ln -s 到/etc/rc.d/rc3.d/S99脚本名与/etc/rc.d/rc5.d/S99脚本名。
K开头的代表系统关闭的时候执行,S开头的代表开机的时候执行。
注意服务器脚本编写的规范,因为有K开通的软链接并不一定会在关机的时候自动去执行,这是为什么呢?刚开始一直没搞明白,后来从网上看到,执行K脚本的时候会查询/var/lock/subsys/下是否有与K 开头脚本同名的空文件名,如果没有就不去执行,所以要按照服务器脚本编写的规范,启动的时候要在/var/lock/subsys/先touch一个与K01后面同名的空文件.同时也要调用/etc/rc.d/init.d/functions能够接受star与stop命令信号,具体可以参考/etc/rc.d/rc文件,本人是在/etc/rc.d/rc0.d/K01yum基础上改写实现的/etc/rc0.d 包含关机脚本K*/etc/rc6.d 包含重启脚本K*Linux关机过程:init同样也用来控制系统关机或者重新启动,通过shutdown命令可以实现关机操作。
要立即关闭计算机,可以使用shutdown -h now命令,h代表的意思就是halt,也就是切断了电源,如果是重新启动,直接把h参数换成r就可以了:shutdown -r now关机过程需要一些时间,这个过程中不应该手工切断电源或者按下reset键。
上面的例子里now参数表示的就是立即的意思,也有许多其他的参数可以选用,比如+n设定倒计时时间,n就是你想要的时间,这些都可以通过man shutdown了解一下。
举例说明,要使系统10分钟后重新起动:shutdown -r +10在linux系统里,shutdown命令会通知已经登录进来的用户它即将关机,不过意义不大罢了。
Linux系统定时任务脚本使用Shell脚本实现对Linux系统的定时任务调度和执行
Linux系统定时任务脚本使用Shell脚本实现对Linux系统的定时任务调度和执行在Linux系统中,我们经常需要执行定时任务来完成一些自动化的工作,例如定期备份数据、定时清理临时文件等。
而在Linux系统中,我们可以使用Shell脚本来实现对定时任务的灵活控制和调度。
本文将介绍如何使用Shell脚本在Linux系统中实现定时任务的调度和执行。
一、Shell脚本基础在开始介绍定时任务的使用之前,我们首先需要了解一些Shell脚本的基础知识。
Shell脚本是一种以Shell(命令行解释器)为解释器的脚本语言,用于批处理任务和自动化操作。
在Linux系统中,我们可以使用各种Shell脚本编写工具,例如Bash、Sh、Csh等。
Shell脚本主要由命令、变量、条件判断、循环等组成。
我们可以使用Shell脚本来执行各种操作,例如创建文件、修改文件权限、运行程序等。
而对于定时任务,我们可以使用Shell脚本来编写一段特定的代码,然后在指定的时间点进行执行。
二、定时任务的调度在Linux系统中,我们可以通过使用crontab命令来实现定时任务的调度。
crontab是一个用于设置定时任务的命令,它可以让我们方便地进行任务的调度和执行。
1. 编写定时任务脚本首先,我们需要编写一个定时任务脚本。
这个脚本可以包含我们想要执行的一系列任务,例如备份数据、清理临时文件等。
下面是一个简单的定时任务脚本示例:```shell#!/bin/bash# 备份数据cp /data/*.txt /backup# 清理临时文件rm -rf /tmp/*```在这个脚本中,我们使用cp命令来将`/data`目录下的所有txt文件复制到`/backup`目录中,然后使用rm命令来清空`/tmp`目录下的所有文件。
2. 编辑crontab任务表接下来,我们需要编辑crontab任务表,将我们编写的定时任务脚本添加到任务列表中。
我们可以使用以下命令来编辑crontab任务表:```shellcrontab -e```编辑任务表时,我们可以按照一定的格式来设置定时任务的执行时间和任务命令。
Linux系统软件升级自动化Shell脚本
Linux系统软件升级自动化Shell脚本Shell脚本是一种在Linux系统中编写和执行脚本的方式,能够对系统进行自动化操作和任务管理。
在Linux系统中,软件的安装和升级是常见的需求,而手动操作繁琐且容易出错。
本文将介绍使用Shell脚本实现Linux系统软件升级的自动化方法,以提高效率和减少人工操作错误的风险。
一、准备工作在开始编写Linux系统软件升级自动化Shell脚本之前,需要先准备一些必要的工作。
1. 确定升级的软件版本和来源:在开始升级之前,需要明确要升级的软件版本和软件的来源,如官方源、第三方源或离线包。
2. 确定系统中的软件管理工具:Linux系统常用的软件管理工具有apt、yum等,需要根据实际情况选取适合的工具。
3. 创建升级日志记录文件:为了方便后续查看升级过程和排查问题,可以创建一个升级日志记录文件。
二、编写自动化升级脚本根据准备工作的前提,我们可以开始编写Linux系统软件升级自动化Shell脚本。
下面是一个示例:```shell#!/bin/bash# 设置软件管理工具package_manager="apt"# 设置要升级的软件列表software_list=("software1""software2""software3")# 创建升级日志记录文件log_file="/var/log/upgrade.log"touch $log_file# 更新软件列表$package_manager update >> $log_file# 升级软件for software in "${software_list[@]}"doecho "升级软件: $software" >> $log_file$package_manager upgrade -y $software >> $log_filedone# 输出升级完成的消息echo "软件升级完成,请查看升级日志文件:$log_file"```以上示例使用了apt作为软件管理工具,软件列表以数组方式存储。
关于脚本启动软件和设置软件开机启动的问题
关于脚本启动软件和设置软件开机启动的问题额之前在Windows上使⽤Aria2,下载了Aria2后直接启动Aria2c不成功,需要使⽤脚本在命令⾏中运⾏。
想起之前看到的终端、shell、系统,终端是⽂本的输⼊输出;shell对终端输⼊的命令解释,然后交给系统执⾏,系统执⾏后交给shell解释给⽤户能看懂的,最后由终端显⽰给⽤户,所以shell就是翻译官。
脚本就是shell能翻译给系统执⾏的命令。
这是⼀个可以启动Aria2的脚本 HideRun.vbs :CreateObject("WScript.Shell").Run "aria2c.exe",0VBS脚本可以让应⽤在后台运⾏,不会像BAT脚本显⽰⿊框框(CMD)对应的BAT脚本是start.bat:aria2c.exe --conf=aria2.conf之后aria2就可以使⽤了如果我想让aria2开机后台启动,则需要把脚本的快捷⽅式添加进开机启动项中可以在win--设置--软件与应⽤--启动中看到,但是我要的应⽤不在这⾥怎么办?具体步骤是:将VBS脚本发送快捷⽅式到桌⾯win+R 打开运⾏窗⼝输⼊shell:Common Startup或者shell:startup将快捷⽅式放进打开的⽂件夹中好了,下次开机软件就⾃动启动了本来事情到这⾥就结束了,知道我安装了软件TrafficMonitor,开源系统监控软件,使⽤上⾯的⽅法⽆法开机启动,使⽤VBS可以成功,但是⼜⼀个系统⽤户控制,软件启动会先询问,如何取消对TrafficMonitor系统⽤户控制Win+R打开运⾏输⼊regedit打开注册表在路径中输⼊计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers没有Layers⽂件夹就⾃⼰新建⼀个--项,然后在Layers⽂件夹中新建⼀个字符串值,名称为TrafficMonitor.exe的绝对路径,包括TrafficMonitor.exe数值为RUNASINVOKER然后开机启动就不会先询问了e其实TrafficMonitor的设置中有开机启动的按钮。
linux(centos)设置开机自启动方法,centos设置php开机就启动方法电脑维修技术网
linux(centos)设置开机自启动方法,centos设置php开
机就启动方法电脑维修技术网
主要是很多时候,当centos系统重启之后,我们需要一些软
件开机就马上跟着也启动就像是nginx一样,当服务器出现一些意外关机或重启之后,php网站也跟着系统重启之后,这时我们只需要在centos设置一下php开机就启动即可。
centos设置开机自启动方法
第1步:远程连接centos终端。
第2步:在centos终端执行“vi /etc/rc.d/rc.local”命令。
第3步:使用vi打开rc.local文件之后,按一下键盘中的“I”键,进入到编辑模式,输入在新行中添加“/php/sbin/php-fpm start”。
电脑维修技术网注:一行是一个命令,如果有需要centos开机就执行两个命令,就分两行输入执行。
原文网址
另外,本文所写的“/php/sbin/php-fpm start”是本文作者PHP启动的命令,这个命令是可以单独执行的,大家在执行之前可先看看命令是否可正常执行。
第4步:在rc.local中添加完php自启动命令后,按一次“ESC”退出vi插入模式,输入“:wq!”并回车确定即可把php添加到centos 开机自启动中了。
电脑维修技术网注:此功能有些类似Windows开始菜单中的启动文件夹,直接托到启动文件夹即可做到开机自启动的效果。
看完本文后,相信不少网友都知道如何在centos系统中添加软件自动启动了吧。
Linux系统软件安装自动化脚本使用Shell脚本自动安装软件包
Linux系统软件安装自动化脚本使用Shell脚本自动安装软件包在Linux系统中,安装和管理软件包可能会是一个繁琐的过程。
为了简化这个过程并提高效率,我们可以使用Shell脚本来自动化软件包的安装。
本文将介绍如何使用Shell脚本来自动化Linux系统软件安装的过程。
一、编写Shell脚本Shell脚本是一种可以在Linux系统中运行的脚本语言,它可以通过编写一些列命令来实现特定的功能。
在我们的例子中,我们将使用Shell脚本来自动化软件包的安装。
首先,我们需要创建一个新的Shell脚本文件。
可以使用任何文本编辑器来创建该文件,例如使用vim编辑器可以执行以下命令来创建一个名为"install.sh"的Shell脚本文件:```$ vim install.sh```接下来,我们需要在Shell脚本文件中添加一些命令来实现软件包的自动化安装。
下面是一个简单的示例:```#!/bin/bash# 安装软件包1echo "正在安装软件包1..."apt-get install 软件包1# 安装软件包2echo "正在安装软件包2..."apt-get install 软件包2# 安装软件包3echo "正在安装软件包3..."apt-get install 软件包3echo "软件包安装完成。
"```在上面的示例中,我们使用了apt-get命令来安装软件包。
你可以将这些命令替换为适用于你所使用的包管理器的命令,例如yum或dnf。
保存并退出Shell脚本文件。
二、运行Shell脚本一旦我们编写完成了Shell脚本文件,我们就可以通过在终端中运行脚本来自动安装软件包。
首先,我们需要将Shell脚本文件设置为可执行权限。
可以使用以下命令来完成:```$ chmod +x install.sh```然后,我们可以使用以下命令来运行脚本:```$ ./install.sh```脚本将自动开始执行,并依次安装所指定的软件包。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在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。