设置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不⽀持。
linux开机启动设置的几种方法
linux开机启动设置的⼏种⽅法Linux开机⾃启动的⼏种⽅式:1.chkconfig以supervisord服务脚本为例:第1步:把上⾯的脚本放在/etc/init.d/⽂件ln -s ./supervisord /etc/init.d/supervisord 第2步:将启动脚本权限改为可执⾏。
chmod a+x /etc/init.d/supervisord 第3步:添加启动项。
chkconfig --add supervisordchkconfig supervisord on 第4步:检查是否设置成功。
chkconfig --list | grep supervisordsupervisord 0:关闭 1:关闭 2:启⽤ 3:启⽤ 4:启⽤ 5:启⽤ 6:关闭2、⼿动配置在⽂件中加⼊启动命令/etc/rc.local3、⽂件指向路径是/etc/init.d下的脚本⽂件/etc/rc[0-6].d0-6是linux操作系统的运⾏级别,运⾏runlevel查看当前运⾏级运⾏级别0:系统停机状态,系统默认运⾏级别不能设为0,否则不能正常启动运⾏级别1:单⽤户⼯作状态,root权限⽤户,⽤于系统维护,禁⽌远程登陆运⾏级别2:多⽤户状态(没有NFS)运⾏级别3:完全的多⽤户状态(有NFS),登陆后进⼊控制台命令⾏模式运⾏级别4:系统未使⽤,保留运⾏级别5:X11控制台,登陆后进⼊图形GUI模式运⾏级别6:系统正常关闭并重启,默认运⾏级别不能设为6,否则不能正常启动/etc/rc[0-6].d⽬录下⽂件的命名规则:S|K + nn + scriptS|K,S开头命名的是开机要执⾏的脚本,K开头命名的是关机要执⾏的脚本nn取值0-100,表⽰优先级,数字越⼤,优先级越低script是软链接指向的脚本的⽂件名/etc/init.d⽬录下的控制脚本接受参数-- start //启动-- stop //停⽌-- restart //重启-- status //状态-- force-reload //重新载⼊配置update-rc.d命令为/etc/init.d⽬录下的脚本建⽴或删除到/etc/rc[0-6].d的软链接增加⼀个服务添加这个服务并让它开机⾃动执⾏update-rc.d apache2 defaults并且可以指定该服务的启动顺序:update-rc.d apache2 defaults 90还可以更详细的控制start与kill顺序:update-rc.d apache2 defaults 20 80其中前⾯的20是start时的运⾏顺序级别,80为kill时的级别。
Linux系统重启脚本使用Shell脚本实现对Linux系统的定时重启和自动恢复
Linux系统重启脚本使用Shell脚本实现对Linux系统的定时重启和自动恢复Linux系统是一种广泛使用的操作系统,它在服务器和嵌入式设备中得到了广泛应用。
在实际运行过程中,为了确保系统的正常运行和稳定性,定时重启和自动恢复是必不可少的功能。
本文将介绍如何使用Shell脚本来实现对Linux系统的定时重启和自动恢复。
实施定时重启功能的第一步是创建一个Shell脚本。
通过使用Linux 的定时任务工具cron,我们可以在指定的时间自动运行这个脚本。
打开终端,输入以下命令创建一个新的脚本文件:```shell$ sudo nano restart.sh```接下来,我们需要编写重启脚本的内容。
在脚本中,我们将使用`shutdown`命令来实现重启功能。
以下是一个示例脚本:```shell#!/bin/bashshutdown -r now```保存并关闭文件。
接下来,我们需要为脚本添加执行权限:```shell$ sudo chmod +x restart.sh```现在,我们可以使用cron来设置定时任务。
通过运行以下命令,我们可以编辑当前用户的cron表:```shell$ crontab -e```在cron表中,每行代表一个定时任务。
按下`i`键进入编辑模式,然后添加以下行来设置每天重启的时间:```30 2 * * * /path/to/restart.sh```这样,每天的凌晨2点30分,系统将自动重启。
修改完成后,按下`Esc`键,然后输入`:wq`保存并退出。
现在,我们已经完成了定时重启功能的设置。
从现在起,系统将在指定时间自动执行重启。
另外,为了确保系统在重启后能够自动恢复到之前的状态,我们还可以编写一个自动恢复脚本。
该脚本将在系统重启后自动运行,并执行一系列操作以将系统恢复到正常状态。
继续使用前面创建的`restart.sh`脚本,我们可以在其中添加自动恢复的操作。
以下是一个示例脚本:```shell#!/bin/bash# 这里是自动恢复的操作```在具体的自动恢复操作中,您可以根据实际需求执行需要的命令和操作,比如恢复数据库、重启服务等。
Linux定时任务与开机自启动脚本(cron与crontab)
Linux定时任务与开机⾃启动脚本(cron与crontab)开机⾃启动脚本⽹上常见的脚本开机⾃启⽅法是:假设要⾃启的脚本位于 /home/user/test.sh给脚本可执⾏的权限sudo chmod +x /home/user/test.sh将脚本⽂件放到 /etc/init.d/ ⽬录下sudo cp /home/user/test.sh /etc/init.d链接到/etc/rc.d/sudo ln -s /etc/init.d/start_my_app /etc/rc.d/这样在新的diban系统中可能不能⽣效,要LSB 兼容之类,脚本还要提供start, stop, restart, force-reload,等命令,具体参考因此这⾥推荐使⽤另外⼀种超级简单的⽅法:bash中输⼊(推荐以管理员的状态)crontab -e第⼀次使⽤这个的话,会提⽰选择⼀种编辑器,根据个⼈喜好选择吧。
然后就会进⼊对应编辑器的编辑界⾯,另起⼀⾏输⼊@reboot /home/user/test.shreboot 后⾯即脚本⽂件位置,然后保存即可。
Ok,脚本现在已经会在开机时⾃动运⾏了。
定时任务同样的bash⾥输⼊ crontab -e然后编辑界⾯加上具体的命令语句。
基本语法为# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed⽐如:每天的凌晨4点半运⾏test.sh脚本30 04 * * * /home/user/test.sh每周的周⼀17:30执⾏test.sh脚本30 17 * * 1 /home/user/test.sh或间隔15分钟执⾏⼀次test.sh脚本*/15 * * * * /home/user/test.sh这个指在9:05 ⾄17:05的范围内,每个钟头的过5分会运⾏⼀次,⽐如10:05、11:05会运⾏05 09-17 * * * /home/user/test.sh关于bash中输⼊service --status-all会发现有个cron,。
linux设置systemctl启动脚本
linux设置systemctl启动脚本centos 7 服务的systemctl 脚本⼀般存在:/usr/lib/systemd⽬录。
⽬录下⼜分为system,和user之分,/usr/lib/systemd/system #系统服务,开机不需要登陆就能运⾏的程序(相当于开启⾃启)+/usr/lib/systemd/user #⽤户服务,需要登录后才能运⾏的程序⽬录下⼜存在两种类型的⽂件:*.service #服务unit⽂件*.target #开机级别unitcentos7 的每⼀个服务以。
service 结尾,⼀般分为3部分:【unit】、【service】、【install】[Unit] # 主要是服务说明Description=test # 简单描述服务After=network.target # 描述服务类别,表⽰本服务需要在network服务启动后在启动Before=xxx.service # 表⽰需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,不涉及依赖关系。
[Service] # 核⼼区域Type=forking # 表⽰后台运⾏模式。
User=user # 设置服务运⾏的⽤户Group=user # 设置服务运⾏的⽤户组KillMode=control-group # 定义systemd如何停⽌服务PIDFile=/usr/local/test/test.pid # 存放PID的绝对路径Restart=no # 定义服务进程退出后,systemd的重启⽅式,默认是不重启ExecStart=/usr/local/test/bin/startup.sh # 服务启动命令,命令需要绝对路径PrivateTmp=true # 表⽰给服务分配独⽴的临时空间[Install]WantedBy=multi-user.target # 多⽤户字段说明Type类型有:simple(默认):#以Execstart字段启动的进程为主进程forking:#Execstart 字段以fox()⽅式启动,,此时⽗进程将退出,⼦进程将成为主进程(后台运⾏),⼀般都设置为forking oneshot : #类似于simple,但只执⾏⼀次,systemd会等他执⾏完,才执⾏其他服务dbus: #类似于simple,但会等待D—Bus信号后启动notify: #类似与simple ,但结束后会发出通知信号,然后systemd才启动其他服务idle: #类似与simple,但要等到其他任务都执⾏完,才启动该服务EnvironmentFile:指定配置⽂件,和连词号组合使⽤,可以避免配置⽂件不存在的异常。
linux自动重启
linux自动重启1、设置开机自动启动crond计划任务服务。
在/etc/rc.d/rc.local这个脚本的末尾加上:/sbin/servicecrondstart关于crond服务的重启、停止等命令如下/sbin/servicecrondstart//启动服务/sbin/servicecrondstop//关闭服务/sbin/servicecrondrestart//重启服务/sbin/servicecrondreload//重新载入配置2、语法如下:示例:每天5:30执行ls命令,并把结果输出到/jp/test文件中305***ls>/jp/test2>&1*/15****ls每15分钟继续执行一次ls命令3、编辑计划任务1、在命令行输入:crontab-e然后添加相应的任务,wq存盘退出。
2、直接编辑/etc/crontab文件,即vi/etc/crontab,添加相应的任务1122110*rm-rf/mnt/fb4、crond服务的一些常用参数cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:crontab-u//预设某个用户的cron服务,通常root用户在继续执行这个命令的时候须要此参数crontab-l//列出某个用户cron服务的详细内容crontab-r//删除没个用户的cron服务crontab-e//编辑某个用户的cron服务比如说root查阅自己的cron设置:crontab-uroot-l再比如,root想要删掉fred的cron设置:crontab-ufred-r比如编辑root用户的crontd服务,则输出:crontab-urootce关于计划任务综合篇二、cron服务上面已经直观了解了cron的一些进程和掌控。
下面我们去看一看cron怎么同时实现。
相对与at,cron的优点就是能够周期性的执行某个命令,at却只能执行一次cron的后台进程名字就是crond,cron也就是systemv的服务,所以我们可以servicecrondstart|stop去启动和停用此服务,也可以采用chkconfig或者ntsysv去挑选cron服务的预设打开,这些命令在以前我们都谈过的#crontab-e编辑当前用户的cron表#crontab-l查阅当前用户的cron表中#crontab-r删除当前用户的cron进程#crontab-u用户名以某用户的身份去掌控cron表中还有个重要的知识点,就是当用户的计划任务建立后是存放在/var/spool/cron这个目录当采用crontab-e编辑当前用户的cron表后,可以发生一个vi文件,cron的格式就是这样的。
linux开机自启动命令
linux开机自启动命令用户想要在linux开机的时候自启动相关的程序。
那我们要怎么设置呢?下面由店铺为大家整理了linux下开机自启动命令的相关知识,希望对大家有所帮助!linux下开机自启动命令1.开机启动时自动运行程序Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。
init根据配置文件继续引导过程,启动其它进程。
通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。
例如:编辑/etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。
扩展:其他情况下linux自启动程序命令2.登录时自动运行程序用户登录时,bash首先自动执行系统管理员建立的全局登录script :/etc/profile。
然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、/.profile,但只执行最先找到的一个。
因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。
3.退出登录时自动运行程序退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。
例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",则在每次退出登录时自动执行 "tar" 命令备份 *.c 文件。
4.定期自动运行程序linux有一个称为crond的守护程序,主要功能是周期性地检查/var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。
用户可以通过crontab 命令来建立、修改、删除这些命令文件。
Linux设置程序开机自启动
Linux设置程序开机⾃启动注意:作者测试时,Linux版本为RedHat6,同时应⽤在CentOS6应该也可以(作者未实测,但有同事在CentOS6上使⽤可⾏),系统版本的不同,可能造成操作上的差异(CentOS7就与CentOS6有较⼤的不同),但具体的思路可借鉴。
以下操作均在root权限下Linux下配置某个服务的开机⾃启动,分为两种情况:⼀种是已经挂载的,另⼀种是未挂载的。
已经挂载的程序可以使⽤ chkconfig命令查到运⾏等级,如httpd服务执⾏命令:#chkconfig --list |grep httpd打印信息:httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off未挂载的程序,不会打印任何信息,如Tomcat执⾏chkconfig --list |grep tomcat,没有打印任何信息⼀,已挂载程序开机⾃启动以httpd服务举例。
在root⽤户下打开⼀个终端。
执⾏命令:chkconfig --list |grep httpd可以看到0~6都是off。
执⾏命令:# chkcongfig httpd on执⾏命令:chkconfig --list |grep httpd执⾏完chkcongfig httpd on后,2~5对应的值变成了on.此时我们通过service httpd status 查看http服务状态,是stopped状态,没有开机⾃启动,此时我们重启Linux电脑,再来查看httpd服务是否开机启动重启Linux,查看httpd服务状态:service httpd status,可以看到httpd服务已经启动知识扩展:执⾏chkcongfig httpd on 可以加--level参数,指定将0~6哪些级别开启,命令格式如下:# chkcongfig --level 345 httpd on345就是需要开启(由off变成on)的数字,⽽不加—level参数时,默认打开的是2~50~6对应的运⾏级别如下:Linux系统有7个运⾏级别(runlevel)运⾏级别0:系统停机状态,系统默认运⾏级别不能设为0,否则不能正常启动运⾏级别1:单⽤户⼯作状态,root权限,⽤于系统维护,禁⽌远程登陆运⾏级别2:多⽤户状态(没有NFS)运⾏级别3:完全的多⽤户状态(有NFS),登陆后进⼊控制台命令⾏模式运⾏级别4:系统未使⽤,保留运⾏级别5:X11控制台,登陆后进⼊图形GUI模式运⾏级别6:系统正常关闭并重启,默认运⾏级别不能设为6,否则不能正常启动⼆、未挂载程序开机⾃启动未挂载的程序开机⾃启动实现⽅式是编写程序启动的.sh脚本,再将此脚本挂载到Linux系统上,让它开机执⾏,启动程序。
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/bashdate >> /home/alvin/output.txthostname >> /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来设置。
LINUX系统中设置开机自动执行命令
LINUX系统中设置开机⾃动执⾏命令###1、开机⾃动执⾏命令配置⽂件位置[root@wx-local01 ~]# cd /etc/rc.d/[root@wx-local01 rc.d]# ls -l /etc/rc.d/总⽤量4drwxr-xr-x. 2 root root 107 9⽉510:40 init.ddrwxr-xr-x. 2 root root 45 11⽉172020 rc0.ddrwxr-xr-x. 2 root root 45 11⽉172020 rc1.ddrwxr-xr-x. 2 root root 45 11⽉172020 rc2.ddrwxr-xr-x. 2 root root 72 5⽉2614:02 rc3.ddrwxr-xr-x. 2 root root 72 5⽉2614:02 rc4.ddrwxr-xr-x. 2 root root 72 5⽉2614:02 rc5.ddrwxr-xr-x. 2 root root 45 11⽉172020 rc6.d-rwxr-xr-x. 1 root root 881 5⽉2716:06 rc.local[root@wx-local01 rc.d]# tree /etc/rc.d//etc/rc.d/├── init.d│├── functions│├── mysql -> /home/wx/mysql/support-files/mysql.server│├── netconsole│├── network│├── README│└── syschronzed_date├── rc0.d│├── K50netconsole -> ../init.d/netconsole│└── K90network -> ../init.d/network├── rc1.d│├── K50netconsole -> ../init.d/netconsole│└── K90network -> ../init.d/network├── rc2.d│├── K50netconsole -> ../init.d/netconsole│└── S10network -> ../init.d/network├── rc3.d│├── K50netconsole -> ../init.d/netconsole│├── S10network -> ../init.d/network│└── S63syschronzed_date -> ../init.d/syschronzed_date├── rc4.d│├── K50netconsole -> ../init.d/netconsole│├── S10network -> ../init.d/network│└── S63syschronzed_date -> ../init.d/syschronzed_date├── rc5.d│├── K50netconsole -> ../init.d/netconsole│├── S10network -> ../init.d/network│└── S63syschronzed_date -> ../init.d/syschronzed_date├── rc6.d│├── K50netconsole -> ../init.d/netconsole│└── K90network -> ../init.d/network└── rc.local8 directories, 24 files2、设置开机⾃启动命令[root@wx-local01 rc.d]# vim /etc/rc.d/rc.local#!/bin/bash# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES## It is highly advisable to create own systemd services or udev rules# to run scripts during boot instead of using this file.## In contrast to previous versions due to parallel execution during boot# this script will NOT be run after all other services.## Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure# that this script will be executed during boot.touch /var/lock/subsys/local#开机执⾏脚本启动harborsh /scripts/shell/start_harbor/power_on_self_starting_harbor.sh3、设置执⾏权限【不设置执⾏权限,启动后不执⾏⽂件中内容】[root@wx-local01 rc.d]# chmod +x /etc/rc.d/rc.local###。
Linux系统服务自动重启脚本使用Python编写的Linux系统服务自动重启工具
Linux系统服务自动重启脚本使用Python编写的Linux系统服务自动重启工具在Linux系统中,有许多重要的服务需要持续运行以确保系统的稳定性和正常运行。
然而,由于各种原因,这些服务有时会出现异常崩溃或意外停止的情况,需要人工干预以重新启动这些服务。
为了提高系统的可用性和减少人工干预的需要,我们可以使用Python编写一个自动重启脚本,以便在服务停止时自动重新启动它们。
下面是这个Linux系统服务自动重启脚本的使用说明和示例代码:1. 环境准备在运行脚本之前,我们需要确保已经安装了Python解释器和相关的依赖库。
在大多数Linux发行版中,Python解释器是默认安装的,我们可以使用以下命令确认是否已经安装了Python:```python --version```如果已经安装,则会显示Python的版本号。
2. 脚本功能介绍这个自动重启脚本的主要功能是监控指定的系统服务,并在服务停止后自动重新启动它们。
脚本会周期性地检查服务的运行状态,如果服务停止,则会自动执行重启操作。
3. 用户配置在运行脚本之前,我们需要进行一些用户配置,以便脚本知道要监控哪些服务,并且知道如何执行重启操作。
在脚本的配置部分,我们可以设置以下参数:- 服务名称:指定要监控的服务的名称。
可以是单个服务,也可以是多个服务。
- 重启命令:指定服务启动的命令或脚本。
这个命令将在服务停止后执行以重新启动服务。
- 监控间隔:指定脚本检查服务状态的时间间隔,单位为秒。
下面是一个示例配置:```services = {'apache2': {'restart_cmd': 'systemctl restart apache2','interval': 10},'mysql': {'restart_cmd': 'service mysql restart','interval': 60},}```在这个示例配置中,我们监控了两个服务,分别是apache2和mysql。
Linux系统服务自动启动脚本
Linux系统服务自动启动脚本Linux系统是一种广泛应用的操作系统,在服务器和个人电脑上都得到了广泛的应用。
为了保证系统服务的及时启动,我们需要使用自动启动脚本来管理各种服务。
本文将介绍Linux系统服务自动启动脚本的使用方法和注意事项。
一、什么是Linux系统服务自动启动脚本?Linux系统服务自动启动脚本是一种用于管理系统服务的脚本文件。
它可以在系统启动时自动运行,并根据预设的配置文件,启动、停止或重启指定的服务。
通过自动启动脚本,我们可以实现系统服务的自动管理,提高系统的稳定性和可靠性。
二、自动启动脚本的编写1. 脚本文件的位置一般情况下,自动启动脚本文件存放在/etc/init.d/目录下。
这是Linux系统中默认的脚本存放位置。
你也可以根据自己的需要将脚本文件存放在其他位置,但要确保系统能够找到并正确执行脚本。
2. 脚本内容的编写自动启动脚本的编写需要注意以下几点:- 根据系统要求,脚本文件必须以#!/bin/bash开头,以告诉系统使用bash作为解释器执行脚本。
- 在脚本的最开始,应该加上适当的注释,说明脚本的用途和功能。
- 脚本中应该包含启动、停止和重启服务的代码。
可以使用特定的命令如systemctl、service等来实现。
- 脚本应该提供start、stop和restart等选项,以便用户在执行脚本时可以选择不同的操作。
- 在脚本的结尾处,应该添加exit命令来结束脚本的执行。
三、自动启动脚本的使用方法使用自动启动脚本可以提高系统服务管理的效率,下面是使用自动启动脚本的基本步骤:1. 编写脚本文件按照前面所述的规范编写自动启动脚本文件,并保存在适当的位置。
2. 设置脚本文件的执行权限使用chmod命令给脚本文件添加执行权限,例如:```chmod +x /etc/init.d/myscript```3. 添加脚本到自启动列表使用chkconfig命令将脚本添加到系统的自启动列表中,例如:```chkconfig --add myscript```4. 启动服务使用service命令启动服务,例如:```service myscript start```至此,你的自动启动脚本已经完成了配置和启动。
Linux中设置服务自启动的三种方式
Linux中设置服务⾃启动的三种⽅式有时候我们需要Linux系统在开机的时候⾃动加载某些脚本或系统服务主要⽤三种⽅式进⾏这⼀操作:ln -s 在/etc/rc.d/rc*.d⽬录中建⽴/etc/init.d/服务的软链接(*代表0~6七个运⾏级别之⼀)chkonfig 命令⾏运⾏级别设置ntsysv 伪图形运⾏级别设置注意:1.这三种⽅式主要⽤于以redhat为基础的发⾏版2.如果还不知道运⾏级别是什么,那么最好先看看相关资料再实验第⼀种⽅式:ln -s 建⽴启动软连接在Linux中有7种运⾏级别(可在/etc/inittab⽂件设置),每种运⾏级别分别对应着/etc/rc.d/rc[0~6].d这7个⽬录Tips:/etc/rc[0~6].d其实是/etc/rc.d/rc[0~6].d的软连接,主要是为了保持和Unix的兼容性才做此策这7个⽬录中,每个⽬录分别存放着对应运⾏级别加载时需要关闭或启动的服务由详细信息可以知道,其实每个脚本⽂件都对应着/etc/init.d/⽬录下具体的服务K开头的脚本⽂件代表运⾏级别加载时需要关闭的,S开头的代表需要执⾏因此,当我们需要开机启动⾃⼰的脚本时,只需要将可执⾏脚本丢在/etc/init.d⽬录下,然后在/etc/rc.d/rc*.d中建⽴软链接即可[root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh此处sshd是具体服务的脚本⽂件,S100ssh是其软链接,S开头代表加载时⾃启动如果需要在多个运⾏级别下设置⾃启动,则需建⽴多个软链接这种⽅式⽐较繁琐,适⽤于⾃定义的服务脚本如果系统中已经存在某些服务(⽐如安装apache时就会有httpd服务项),可以使⽤下⾯的两种⽅式第⼆种⽅式:chkconfig如果需要⾃启动某些服务,只需使⽤chkconfig 服务名 on即可,若想关闭,将on改为off在默认情况下,chkconfig会⾃启动2345这四个级别,如果想⾃定义可以加上--level选项上⾯我们先将sshd服务的所有启动级别关闭,然后使⽤--level选项启动⾃定义级别Tips:--list选项可查看指定服务的启动状态,chkconfig不带任何选项则查看所有服务状态第三种⽅式:ntsysv 伪图形ntsysv和chkconfig其实是⼀样的,只不过加上了图形⽽已启动ntsysv有两种⽅式,⼀是直接在命令⾏中输⼊ntsysv,⼆是使⽤setup命令,然后选择系统服务默认情况下,当前运⾏级别为多少,在ntsysv中设置的启动服务的级别便是多少⽐如,我当前的运⾏级别是3,那么我在伪图形界⾯中选择启动服务后,它的运⾏级别也会是3如果想⾃定义运⾏级别可使⽤ntsysv --level⽅式以上三种操作需要保证服务脚本⽂件可执⾏,并且要有root权限其中,第⼀种⽅式多⽤于⾃定义脚本,第⼆、三种多⽤于系统已存在的服务⽐如ftp、samba、ssh、httpd等等并且,要做相关设置需要弄清楚运⾏级别的问题Tips:如果想⼿动启动某服务,传统的⽅式是/etc/init.d服务名 start 实际上还可以这样,service 服务名 start。
Linux系统服务启动脚本使用Shell脚本实现服务的自动启动和停止
Linux系统服务启动脚本使用Shell脚本实现服务的自动启动和停止在Linux系统中,服务是非常重要的组成部分。
服务可以是Web服务器、数据库服务器或其他重要后台程序。
为了方便管理,我们经常需要将这些服务设置为开机自启动,并能够方便地手动启动和停止。
为了实现这一目标,我们可以使用Shell脚本来编写启动和停止服务的脚本。
Shell脚本是一种在Unix/Linux系统中非常常见的脚本编程语言,它可以用来自动化执行任务和管理系统。
下面,我将简要介绍如何使用Shell脚本来实现服务的自动启动和停止。
首先,我们需要创建一个Shell脚本文件,命名为“service.sh”。
在这个文件中,我们需要定义两个函数,分别用来启动和停止服务。
例如,我们以启动Nginx服务为例,可以按照以下方式编写脚本:```shell#!/bin/bash# 启动服务start_service() {echo "Starting Nginx service..."/usr/sbin/nginxecho "Nginx service started."}# 停止服务stop_service() {echo "Stopping Nginx service..."/usr/sbin/nginx -s stopecho "Nginx service stopped."}# 根据命令行参数选择启动或停止服务case "$1" instart)start_service;;stop)stop_service;;*)echo "Usage: $0 {start|stop}";;esac```在上面的脚本中,我们首先定义了两个函数,即“start_service”和“stop_service”。
这些函数分别用来启动和停止Nginx服务。
Linux系统服务自动启停脚本使用Python编写的Linux系统服务自动启停工具
Linux系统服务自动启停脚本使用Python编写的Linux系统服务自动启停工具Linux操作系统提供了强大的服务管理机制,使得系统管理员可以方便地启动、停止、重启以及管理各种服务。
为了简化这一过程,我们可以使用Python编写的自动启停脚本,实现对Linux系统服务的自动管理。
本文将介绍如何编写这样的脚本,并提供一个简单的示例。
## 1.脚本概述在开始之前,我们先来了解一下Linux系统服务的启停原理。
Linux 系统中的服务通常以daemon进程的形式运行,这些进程可以通过执行特定命令来启动、停止或重启。
我们的脚本将使用Python的subprocess模块,通过执行这些命令来对服务进行管理。
## 2.准备工作在编写脚本之前,我们需要先确定要管理的服务以及相应的命令。
我们可以通过运行`systemctl list-units --type=service`命令来列出所有的服务及其状态。
选择一个你想要管理的服务,记录下启动、停止、重启服务所需要执行的命令。
## 3.编写脚本接下来,我们开始编写自动启停脚本。
首先,我们需要导入Python 的subprocess模块,用于执行命令。
```pythonimport subprocess```接着,我们定义一个函数`start_service`来启动服务,函数的参数是服务的启动命令。
```pythondef start_service(command):subprocess.run(command.split())```类似地,我们可以定义`stop_service`和`restart_service`函数来停止和重启服务。
```pythondef stop_service(command):subprocess.run(command.split())def restart_service(command):subprocess.run(command.split())```现在,我们可以在脚本的主函数中调用这些函数,来实现对服务的自动管理。
Linux系统自动重启脚本使用Python编写的用于自动重启Linux系统的工具
Linux系统自动重启脚本使用Python编写的用于自动重启Linux系统的工具自动重启是一种方便快捷的方式来解决系统故障或意外崩溃的问题。
在Linux系统中,我们可以使用Python编写一个自动重启脚本来实现这一功能。
本文将介绍如何使用Python编写一个用于自动重启Linux系统的工具。
一、引言Linux系统是一种稳定可靠的操作系统,但难免会遇到一些突发的故障或崩溃。
为了确保系统的连续运行,我们需要一种自动重启的机制来解决这些问题。
使用Python编写的自动重启脚本可以帮助我们快速重启系统,提高系统的可用性和稳定性。
二、功能需求在开始编写自动重启脚本之前,我们需要确定一些功能需求:1. 监测系统状态:脚本需要能够监测系统的状态,包括CPU、内存和磁盘使用情况等。
当系统达到某个预设的阈值时,脚本将触发重启操作。
2. 定时重启:脚本应该能够根据预设的时间间隔自动重启系统。
这样可以在一定程度上避免系统故障的累积,保持系统的稳定性。
3. 日志记录:为了方便问题追溯和排查,脚本需要能够记录系统重启的日志信息。
这样可以帮助管理员更好地了解系统的运行情况。
三、实现为了实现上述功能需求,我们将使用Python编写一个自动重启脚本。
下面是一个简单的示例:```pythonimport osimport time# 设定监测阈值threshold = 80 # CPU使用率阈值(%)# 设定重启时间间隔restart_interval = 1800 # 重启时间间隔(秒)# 判断系统状态并重启def check_and_restart():while True:# 获取当前CPU使用率cpu_usage = os.popen('top -bn1 | awk "/Cpu\(s\):/ {print $2}"').readline().strip()cpu_usage = float(cpu_usage)# 判断CPU使用率是否达到阈值if cpu_usage >= threshold:# 记录重启日志with open('restart.log', 'a') as log_file:log_file.write(f'System restarted at {time.ctime()}\n')# 执行重启命令os.system('reboot')# 休眠一段时间time.sleep(restart_interval)# 主函数if __name__ == '__main__':check_and_restart()```四、使用方法1. 安装Python:在Linux系统中,可以使用包管理器安装Python,如`apt-get`或`yum`。
Linux实现脚本开机自启动
Linux实现脚本开机⾃启动参考链接:Ubuntu系统实现脚本开机⾃启动0、序⾔ 很多时候,我们使⽤Linux时,为了⽅便操作,需要⽤到⼀些⾃启动的脚本,对于不同的Linux系统来说,⾃启动⽅式各有不同,我这⾥记录的是Ubuntu 20.0系统的;⽂章后⾯会补充参考链接的博客部分内容,仅供参考学习使⽤。
该⽅法也可以⽤在移植系统时,把开机启动服务移植进去。
在 Ubuntu 16以前,有个很简单的 rc.local ,在这个⽂件内写上你要执⾏的命令,在开机后,系统就会以管理员权限去执⾏这些命令。
但是,这个启动脚本的控制粒度并不是很精细。
所以,在Ubuntu18 版本开始,Ubuntu使⽤了 systemd 替代了 initd 管理系统。
并且默认已经取消了 /etc/rc.local ⽂件,如果要在 Ubuntu16 以后使⽤ rc.local 这个⽅法,可以参考我i另⼀篇博⽂:。
1、建⽴开机启动服务 跳转到/etc/systemd/system⽂件夹,移植系统时也是到你的⽂件系统的这个⽂件夹; 新建开机启动服务sudo vim my_start.service[Unit]#该⽂件是⾃⼰建⽴的启动服务⽂件,#/bin/my_start.sh 是你要启动的脚本所在的路径以及⽂件名,其他保持默认格式即可Description=/bin/my_start.sh CompatibilityConditionPathExists=/bin/my_start.s h[Service]Type=forkingExecStart=/bin/my_start.shTimeoutSec=0StandardOutput=ttyRemainAfterExit=yesSysVStartPriority=99[Install]WantedBy=multi-user.target 给启动服务添加权限sudo chmod 777 my_start.service2、创建要⾃启动的脚本 因为我在第⼀步的启动服务⾥声明的启动脚本路径以及名称,所以建⽴的启动脚本名称路径要跟启动服务⾥声明的⼀致;跳转到启动服务⾥声明的/bin⽬录,添加启动脚本vim my_start.sh#!/bin/sh#该⽂件为⾃定义开机启动脚本,可以⽤该脚本执⾏⼀些你需要开机启动的脚本PASSWORD="your_password"#你如果做系统移植时,可以把 roo t的密码参数设置为 export,然后这⾥设置为 PASSWORD=${ROOT_PASSWORD},就是直接提取你的 root 密码#具体你的系统保持密码的参数是什么要看你的移植的系统了,我的是 ROOT_PASSWORDecho ${PASSWORD} | sudo -S /bin/myStart/set_net_core.sh #echo ${PASSWORD} | sudo -S 是实现脚本⾃动把执⾏sudo命令时要输⼊的密码输⼊进去#我在这⾥的脚本实现的是:启动 /bin/myStart ⽂件夹⾥的 set_net_core.sh 脚本#这种⽅法的好处就是我只需要做⼀个启动服务专门⽤来执⾏⼀个脚本去执⾏其他脚本,这样后续还有新的需要开机⾃启动脚本就只需要把执⾏命令写⼊到这⾥即可 给启动脚本添加权限 sudo chmod 777 my_start.sh3、启动脚本⾃启动服务 跳转到/etc/systemd/system⽂件夹,其实不进⼊也⾏,我这⾥为了加深记忆才重新进⼊⼀次;执⾏指令sudo systemctl enable my_start.service启动脚本⾃启动服务,然后使⽤指令reboot重启你的系统; 如果你是做系统移植需要⽤到的,你需要移植完系统,烧录后执⾏⼀次该指令,只需要执⾏⼀次即可,后续你断电关机重启都不⽤执⾏了。
linux下添加简单的开机自启动脚本
linux下添加简单的开机⾃启动脚本在linux的使⽤过程中,我们经常会碰到需要将某个⾃定义的应⽤程序设置为开机⾃启动以节省操作时间,这⾥提供两个设置开机⾃启动的⽅法。
注:博主使⽤的ubuntu-16.04进⾏实验,其它版本可能有偏差,但实现原理类似。
rc.local在rc.local脚本中添加开机⾃启动程序ubuntu在开机过程之后,会执⾏/etc/rc.local(注意/etc/init.d中也有个rc.local,不要弄混了)⽂件中的脚本程序,初始情况下,这个⽂件内容是这样的:downey@ubuntu:~$ cat /etc/rc.local#!/bin/sh -e## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the script will "exit 0" on success or any other# value on error.## In order to enable or disable this script just change the execution# bits.## By default this script does nothing.并不包含其它内容,⽤户可以在⾥⾯添加需要开机执⾏的脚本命令,这⾥以diodon粘贴板⼯具为例,如果我要开机运⾏diodon进程,在⽂本中添加:downey@ubuntu:~$ cat /etc/rc.local#!/bin/sh -e## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the script will "exit 0" on success or any other# value on error.## In order to enable or disable this script just change the execution# bits.## By default this script does nothing../usr/bin/diodon &exit 0看到这⾥有些盆友就要问了,为什么要在执⾏命令后⾯加&?在shell执⾏命令后加&是为了让应⽤程序在后台运⾏,rc.local也是⼀个脚本,主进程在运⾏这个脚本时必须能够返回,如果在这个脚本⾥⾯执⾏了⼀些死循环或者其他⽆法返回的任务,整个系统就很可能卡死在这⾥,⽆法启动,所以在这⾥运⾏的⽤户程序必须是能够返回或者本⾝就使⽤⼀些后台运⾏的进程。
Linux系统服务启动自动重启Shell脚本
Linux系统服务启动自动重启Shell脚本在Linux操作系统中,服务的启动和自动重启是非常重要的任务。
为了保证系统稳定性和可靠性,我们可以编写一个Shell脚本来实现服务的自动启动和重启。
本文将介绍如何编写一个Shell脚本来实现这一功能。
一、确定需要自动重启的服务在开始编写Shell脚本之前,我们首先需要确定需要自动重启的服务。
可以通过以下命令查看当前系统运行的服务:```systemctl list-units --type=service --state=running```根据实际需求选择需要自动重启的服务,例如我们选择自动重启Apache服务。
二、编写自动重启Shell脚本打开终端,创建一个新的Shell脚本文件,例如auto_restart.sh,使用任意文本编辑器进行编辑,并添加以下内容:```#!/bin/bashservice_name="apache2" # 需要自动重启的服务名while true; dois_running=$(systemctl is-active $service_name) # 检查服务是否运行if [ "$is_running" != "active" ]; thensystemctl start $service_name # 如果服务未运行,则启动服务echo "$(date): Service $service_name restarted." >>/var/log/auto_restart.log # 记录重启日志fisleep 60 # 等待60秒后再次检查服务运行状态done```在上述脚本中,我们首先定义了需要自动重启的服务名,并使用一个无限循环来持续检查服务是否运行。
如果服务未运行,则使用systemctl命令启动服务,并将重启信息记录到/var/log/auto_restart.log文件中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设置Linux开机自动运行脚本
参考资料
实现目标:在Linux启动时,自动运行位于普通用户test1根目录下的脚本程序test.py,该程序会在每次执行时自动向本地日志文件追加一条记录,源码如下:
fromdatetime import datetime
now=datetime.now()
f=open('test.log','a')
f.write('%s '%now)
f.close()
Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法:
方案一:
1、因为其中的rc.local是在完成所有初始化之后执行,因此我们可以把启动脚本写到里面
2、用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入两行需要执行的脚本程序:
cd /home/test1 --该步不可少,否则会提示没有权限打开'test.log'文件
su test1 -c "python /home/test1/test.py" --把要执行的命令作为一个参数传递级su 方案二:
1、init.d目录下都为可执行程序,他们其实是服务脚本,按照一定格式编写,Linux 在启动时会自动执行,类似Windows下的服务
2、用root帐号登录,vi /etc/rc.d/init.d/mystart,追加如下内容:
#!/bin/bash
#chkconfig:2345 80 05 --指定在哪几个级别执行,0一般指关机,
6指的是重启,其他为正常启动。
80为启动的优先级,05为关闭的优先机
#description:mystart service
RETVAL=0
start(){ --启动服务的入口函数
echo -n "mystartserive ..."
cd /home/test1
su test1 -c "python /home/test1/test.py"
}
stop(){ --关闭服务的入口函数
echo "mystart service is stoped..."
}
case $1 in --使用case,可以进行交互式操作
start)
start
;;
stop)
stop
;;
esac
exit $RETVAL
3、运行chmod +r /etc/rc.d/init.d/mystart,使之可直接执行
4、运行chkconfig --add mystart,把该服务添加到配置当中
5、运行chkconfig --list mystart,可以查看该服务进程的状态
总结:
两种方案的的核心都是切换用户到test1,然后执行命令启动Python程序,做成服务的好处是可以定义多个交互命令,比
如:start,stop,restart,reset...,在服务运行的过程中还可以做相应操作。
最开始的时候,我按照一般的思路写了如下脚本,却怎
么也执行不了:
su test1 --切换到test1用户
cd /home/test1 --切换到根目录
python test.py --执行python程序
exit --退出test1帐号
看起来好象一切都没错,但是发现只运行了第一行的命令,后面的都没有运行,直到退出test1用户后才发现好象执行完毕。
分析原因,
是因为Linux启动的时候是在root帐号下,执行su
test1等于打开了一个新的shell脚本,因此下面的代码都在等着新的Shell脚本结束才能运行,就象在主程序里调用了一个子程序,而子程序是个死
循环,一下出来来结果下面的要等死了。
知道了发生的原因,那么解决的办法就相对简单了,就是在执行上述脚本程序时,不要离开本身的Shell。
我们可以把
执行命令做为su的一个参数传递进去,因为没有涉及到打开新的Shell,因此可以正常执行你期望的脚本程序,顺利实现开机自动启动指定的脚本程序。
实例操作:
(在CentOS5.8启动、停止及重新启动 Helix server 11 for Linux 服务测试成功)
随Linux启动时自动启动HelixServer服务,HelixServer安装目录:/var/HelixServer/ 启动脚本:
#cd //var/HelixServer
#./Bin/rmserverrmserver.cfg& //后台启动HelixServer服务
#cat ./Logs/rmserver.pid //查看HelixServer进程号
#kill 在此输入查看到的进程号
创建一个启动、停止或重新启动HelixServer服务脚本helixserver:
1、用root帐号登录,vi /etc/init.d/helixserver,追加如下内容:
#!/bin/bash
#chkconfig:2345 80 05 --指定在哪几个级别执行,0一般指关机,
6指的是重启,其他为正常启动。
80为启动的优先级,05为关闭的优先级
#description:helixserver service
#helixserver –f /var/HelixServer/Bin/rmserver || exit 0
case "$1" in
start)
echo -n "Starting HelixServer:rmserver"
cd /var/HelixServer
./Bin/rmserverrmserver.cfg&
echo "."
;;
stop)
echo -n "Stopping HelixServer:rmserver"
pid=`cat /var/HelixServer/Logs/rmserver.pid` //注:`用的是尖角号也就是数字键1左边的那个键
kill $pid
echo "."
;;
restart)
echo -n "Stopping HelixServer:rmserver"
pid=`cat /var/HelixServer/Logs/rmserver.pid` //注:`用的是尖角号也就是数字键1左边的那个键
kill $pid
echo "."
echo -n "Starting HelixServer:rmserver"
cd /var/HelixServer
./Bin/rmserverrmserver.cfg&
echo "."
;;
*)
echo "Usage: /etc/init.d/helixserverstart|stop|restart"
exit 1
;;
esac
2、运行chmod +x /etc/init.d/helixserver,使之可直接执行
3、运行chkconfig --add helixserver,把该服务添加到配置当中
4、创建服务链接,告诉系统在运行级2期间启动helixserver,并在系统关闭以前妥善地停止这个守护进程。
#ln -s /etc/init.d/helixserver /etc/rc2.d/S80helixserver
#ln -s /etc/init.d/helixserver /etc/rc0.d/K80helixserver
#ln -s /etc/init.d/helixserver /etc/rc6.d/K80helixserver
5、运行chkconfig --list helixserver,可以查看该服务进程的状态
开放以下端口:
iptables -I INPUT -p tcp --dport 33333 -j ACCEPT
iptables -I INPUT -p tcp --dport 9999 -j ACCEPT
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
iptables -I INPUT -p tcp --dport 554 -j ACCEPT
iptables -I INPUT -p tcp --dport 1755 -j ACCEPT
也可以直接将以下代码添加到/etc/sysconfig/iptables文件里
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport554 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport1755 -j ACCEPT。