Linux实现开机自动运行普通用户脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux实现开机自动运行普通用户脚本相关的知识,希望对你有一定的参考价值。

既然要实现开机自动运行脚本,那么就与Linux开机自启服务的原理有关;Linux开机的时候,会有一步读取/etc/inittab配置文件,选定系统运行级别,然后进行系统初始化,执行/etc/rc.d/下的rc脚本;而其中/etc/rc.d/rc.local自启动脚本是Linux留给用户自定义个性启动项的一个脚本。
你只要打开这个脚本文件,看上面的解释,很明显的告诉你这个脚本文件的作用。用户可以在这里写入脚本,开机的时候会自动执行该脚本,启动想要启动的服务程序。

[[email protected] ~]# cat /etc/rc.d/rc.local 
#!/bin/sh

#This script will be executed *after* all the other init scripts.
#You can put your own initialization stuff in here if you don‘t
#want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
[[email protected] ~]#

方案一:
使用/etc/rc.d/rc.local自启动脚本文件实现开机自动运行普通用户脚本
有两种实现方法:
1、把需要开机启动的脚本程序直接写入/etc/rc.d/rc.local文件中,这样子开机时就会自动执行这些脚本程序,运行对应的服务程序。需要在root环境下编辑
2、先把脚本程序写好,定义好路径,然后使用su命令来执行,这里只需把su命令写进/etc/rc.d/rc.local脚本文件中即可。
比如:我需要开机执行/home/ricky/bin/ricky.sh脚本,那么在/etc/rc.d/rc.local中加入以下语句:
[[email protected]~]#echo "su - ricky -c ‘/bin/sh /home/ricky/bin/ricky.sh‘" >>/etc/rc.d/local
命令的执行路径一定要用绝对路径,防止因环境变量原因而出错。

方案二:
我们都了解/etc/init.d/目录下的所有文件都是脚本文件,这个目录下的脚本文件,在设置好开机自启动项后,在开机时会自动执行。
使用root账号,自启动脚本编辑脚(随意写的一个启动脚本)

[[email protected] ~]#vim /etc/init.d/networkstart
#!/bin/bash
#network start scripts

#chkconfig: 235 80 30  --235指定的启动级别,在哪写启动级别下启动;--80 启动的优先级;--30 关闭的优先级
service network start –-启动network服务(你也可以把普通用户脚本放这里,开机启动的时候就会执行;也可以定义好脚本路径,把执行脚本的命令放进这里)

文件默认是没有执行权限的,所以要调整好脚本文件权限

[[email protected] ~]# chmod +x /etc/init.d/networkstart

还需要加入启动项设置开机启动,使脚本文件生效

[[email protected] ~]# chkconfig --add networkstart 加入启动项
[[email protected] ~]# chkconfig networkstart on   设置开机自启动

如果开了防火墙,还得把防火墙关掉

[[email protected] ~]# service stop iptables   关闭防火墙
[email protected] ~]# setenforce 0 关闭SELinux

以上是关于Linux实现开机自动运行普通用户脚本的主要内容,如果未能解决你的问题,请参考以下文章

linux自动登录

linux 下怎么查看crontab是不是自动启动了,普通用户下要怎么设置为开机自动启动crond服务呢?

添加啥代码可以使vbs脚本开机自启动?

linux设置开机自启动脚本的最佳方式

Linux 设置开机自动运行脚本

如何修改linux开机运行配置脚本