2018-06-20 20:27:38 dongdong_csdn 阅读数 1660
  • Linux系列之走进Linux新世界

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    20450 人正在学习 去看看 马永亮

嵌入式 linux 设置自启动

例如:添加开机自启动程序climb.out

其中climb.out必须要在系统中的模块都初始化之后才能正常执行
使用延时的方法,等待其他部分初始化完成,暂时没有找到更好的办法。。。。。。。。

1、在/home/root/下创建mountain.sh(可以是任意目录)

命令:vi mountain.sh

输入(字母“i”开始编辑)


 #!/bin/sh

sleep 30

cd /home/root

./climb.out 

(完成编辑,esc -> :wq! -> 回车)

2、设置mountain.sh的权限

chmod 777 mountain.sh

3、在目录/etc/init.d中的rc文件中的最后添加

跳转到/etc/init.d :cd /etc/init.d

编辑rc文件 :vi rc

在最后添加


cd /home/root/

./mountain.sh &

(完成编辑,esc -> :wq! -> 回车)

2014-11-13 10:43:58 zhouyangang2008 阅读数 123
  • Linux系列之走进Linux新世界

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    20450 人正在学习 去看看 马永亮
大多数Linux开机自启动,都是把命令写到/etc/rc.d/rc.local或者 /etc/rc.local里,这样虽然能够实现随机运行,但是并不够灵活。不能像mysql,apache等服务一样能够使用service命令或者调 用init.d下的脚本启动、关闭或者重启进程。例如,

service mysql restart
service apache2 stop

或者

/etc/init.d/mysql restart
/etc/init.d/apache2 stop

编写一个启动控制脚本,以hxht为例,建立/etc/init.d/hxht文本文件,输入下面的内容:

复制代码
#!/bin/sh

case "$1" in
start)
start-stop-daemon --start --background --exec /home/fx/hxht.py
;;
stop)
start-stop-daemon --stop --name hxht.py
;;
restart)
start-stop-daemon --stop hxht.py
start-stop-daemon --start --background --exec /home/fx/hxht.py
;;
*)
echo "please use args: start stop restart!"
;;
esac
复制代码


这是一个简单的shell脚本,case .. in是用来根据调用参数进行不同的操作,start-stop-daemon是一个可以管理daemon进程的程序,要查看它的详细说明,可以运行man start-stop-daemon。start的时候,使用--exec指定要执行的文件,stop的时候,使用--name根据进程名字来使用 killall结束匹配的进程。

接着,设置脚本文件属性,设置可执行标记。

root@localhost:~# chmod 755 /etc/init.d/hxht

这样子,就可以使用service命令来启动和关闭进程了,例如启动进程如下:

root@localhost:~# service hxht start
root@localhost:~# ps aux|grep hxht
root 353 1.4 1.9 8644 5212 ? S 09:50 0:00 /usr/bin/python /root/hxht.py
root 355 0.0 0.2 1900 596 pts/0 S+ 09:50 0:00 grep --color=auto hxht
关闭进程,

root@localhost:~# service hxht stop
root@localhost:~# ps aux |grep hxht
root 365 0.0 0.2 1900 592 pts/0 S+ 09:51 0:00 grep --color=auto hxht
到这里,一个Linux服务的进程控制脚本已经写好了,但是要实现随机启动,还需要一个步骤。
Linux开机的时候,不是直接运行/etc/init.d下的所有脚本的,而是根据不同的runlevel来执行/etc/rc$runlevel.d 下的脚本。这里的runlevel是用以区别系统的运行方式(例如单用户的runlevel,多媒体桌面的runlevel,服务器的runlevel都 不同)。

在Ubuntu里,可以使用update-rc.d来把/etc/init.d/hxht安装到各个runlevel中。更多关于update-rc.d的说明,请参见man update-rc.d。

root@localhost:~# update-rc.d hxht defaults 99
update-rc.d: warning: /etc/init.d/hxht missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
Adding system startup for /etc/init.d/hxht ...
/etc/rc0.d/K99hxht -> ../init.d/hxht
/etc/rc1.d/K99hxht -> ../init.d/hxht
/etc/rc6.d/K99hxht -> ../init.d/hxht
/etc/rc2.d/S99hxht -> ../init.d/hxht
/etc/rc3.d/S99hxht -> ../init.d/hxht
/etc/rc4.d/S99hxht -> ../init.d/hxht
/etc/rc5.d/S99hxht -> ../init.d/hxht
update-rc.d后面有三个参数,分别是/etc/init.d下的脚本名字,默认安装方式,运行的优先级。优先级的数字越大,表示越迟运行,这里我们把自己写的服务放在最后运行。

如果要卸载随机启动的服务,执行

update-rc.d -f hxht remove

在update-rc.d安装的时候提示了警告信息,是因为我们写的/etc/init.d/hxht太简陋了,连LSB的信息也没有提供。

update-rc.d: warning: /etc/init.d/hxht missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>

只需要做一些小改动,就可以避免那个警告了。如下:

#!/bin/sh
### BEGIN INIT INFO
# Provides: hxht
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the hxht service
### END INIT INFO

case "$1" in
start)
start-stop-daemon --start --background --exec /home/fx/hxht.py
;;
stop)
start-stop-daemon --stop --name hxht.py
;;
restart)
start-stop-daemon --stop hxht.py
start-stop-daemon --start --background --exec /home/fx/hxht.py
;;
*)
echo "please use args: start stop restart!"
;;
esac

到此,一个最简单的随机启动服务写好了,看起来文章挺长的,但其实也就几个命令而已。
在下次开机启动的时候,hxht.py就会以root用户身份被自动运行。



现在,你应该知道怎么编写属于自己的service命令了吧,编写一个脚本,然后把它放在/etc/init.d这个目录底下,你就可以用service +脚本名字 运行它。如果是要开机自动启动那就得用chkconfig命令了。

注意:

A、service这个命令往往是即时生效,不用开关机,但是重启后服务会回到默认状态。

B、chkconfig是用于把服务加到开机自动启动列表里,只要启动它,就能自动启动,重启后永久生效

即:chkconfig --add COMMAND

chkconfig COMMAND on/off 重启后永久生效
2018-06-09 15:42:25 fukai8350 阅读数 103
  • Linux系列之走进Linux新世界

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    20450 人正在学习 去看看 马永亮
很多办法可以让Tomcat在系统启动的时候自动运行,一种简单,另外一种复杂而专业。
一. 简单的方法

Tomcat安装目录下的bin目录有两个脚本分别用来启动和停止Tomcat,分别是startup.sh, shutdown.sh,

你可以用这两个脚本来手工启动和停止Tomcat服务并进行安装后的测试。

我们最简单的方法就是通过startup.sh来自动启动Tomcat,

编辑/etc/rc.d/rc.local 增加内容(假设JDK目录是/usr/java/jdk,Tomcat目录是/usr/local/tomcat)

export JDK_HOME=/usr/java/jdk
export JAVA_HOME=/usr/java/jdk
/usr/local/tomcat/bin/startup.sh
这样在系统重启后就可以自动启动Tomcat
二. 复杂而专业的方法
前面介绍的应该是最简单的让Tomcat自动启动的方法了,但是它有两个不足
1. 无法指定启动Tomcat服务的用户,会导致Tomcat已超级用户运行,存在重大的安全隐患

2. 系统关闭的时候无法自动停止Tomcat服务

新建tomcat文件

vi /etc/init.d/tomcat

编辑文件,将下面代码复制到tomcat文件中,不过需要自己修改对应的JDK路径和Tomcat的CATALINA_HOME的路径

#!/bin/sh  
# chkconfig: 345 99 10  
# description: Auto-starts tomcat  
# /etc/init.d/tomcatd  
# Tomcat auto-start  
# Source function library.  
#. /etc/init.d/functions  
# source networking configuration.  
#. /etc/sysconfig/network  
RETVAL=0  
export JAVA_HOME=/usr/java/jdk10 
export CATALINA_HOME=/usr/local/tomcat  
export CATALINA_BASE=/usr/local/tomcat  
start()  
{  
        if [ -f $CATALINA_HOME/bin/startup.sh ];  
          then  
            echo $"Starting Tomcat"  
                $CATALINA_HOME/bin/startup.sh  
            RETVAL=$?  
            echo " OK"  
            return $RETVAL  
        fi  
}  
stop()  
{  
        if [ -f $CATALINA_HOME/bin/shutdown.sh ];  
          then  
            echo $"Stopping Tomcat"  
                $CATALINA_HOME/bin/shutdown.sh  
            RETVAL=$?  
            sleep 1  
            ps -fwwu root | grep tomcat|grep -v grep | grep -v PID | awk '{print $2}'|xargs kill -9  
            echo " OK"  
            # [ $RETVAL -eq 0 ] && rm -f /var/lock/...  
            return $RETVAL  
        fi  
}  
  
case "$1" in  
 start)   
        start  
        ;;  
 stop)    
        stop  
        ;;  
                                                  
 restart)  
         echo $"Restaring Tomcat"  
         $0 stop  
         sleep 1  
         $0 start  
         ;;  
 *)  
        echo $"Usage: $0 {start|stop|restart}"  
        exit 1  
        ;;  
esac  
exit $RETVAL

3) 设置tomcat脚本权限

chmod 755 /etc/rc.d/init.d/tomcat

4) 设置脚本开机启动

chkconfig --add tomcat

5) 完成配置,重启服务

reboot

6) 验证是否启动

ps -aux | grep tomcat

ps -ef | grep tomcat

启动tomcat服务: service tomcat start
停止tomcat服务: service tomcat stop
重启tomcat服务:service tomcat restart



2013-01-10 11:38:25 Shb_derek 阅读数 19212
  • Linux系列之走进Linux新世界

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    20450 人正在学习 去看看 马永亮


1.开机启动时自动运行程序

Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。


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 命令来建立、修改、删除这些命令文件。
例如,建立文件crondFile,内容为"00 9 23 Jan * HappyBirthday",运行"crontab cronFile"命令后,每当元月23日上午9:00系统自动执行"HappyBirthday"的程序("*"表示不管当天是星期几)。 (/etc/crontab中配置命令即可)也可以


5.定时自动运行程序一次
定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:


6.创建开机自启动脚本

-----------------------------------------------------------

  1) 将你的启动脚本复制到 /etc/init.d目录下

    以下假设你的脚本文件名为 test。

    2) 设置脚本文件的权限

    $ sudo chmod 755 /etc/init.d/test

    3) 执行如下命令将脚本放到启动脚本中去:

    $ cd /etc/init.d

    $ sudo update-rc.d test defaults 95

    注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。该命令的输出信息参考如下:

    update-rc.d: warning: /etc/init.d/test missing LSB informationupdate-rc.d: see

    卸载启动脚本的方法:

    $ cd /etc/init.d

    $ sudo update-rc.d -f test remove

    命令输出的信息参考如下:

    Removing any system startup links for /etc/init.d/test …    /etc/rc0.d/K95test    /etc/rc1.d/K95test    /etc/rc2.d/S95test    /etc/rc3.d/S95test    /etc/rc4.d/S95test    /etc/rc5.d/S95test    /etc/rc6.d/K95test


----------------------------------------------------

CentOS系统下,主要有两种方法设置自己安装的程序开机启动。
1、把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd。

  1. #!/bin/sh
  2. #
  3. # This script will be executed *after* all the other init scripts.
  4. # You can put your own initialization stuff in here if you don't
  5. # want to do the full Sys V style init stuff.
  6.  
  7. touch /var/lock/subsys/local
  8. /usr/local/apache/bin/apachectl start

2、把写好的启动脚本添加到目录/etc/rc.d/init.d/,然后使用命令chkconfig设置开机启动。
例如:我们把httpd的脚本写好后放进/etc/rc.d/init.d/目录,使用            【把自己写的服务放在系统服务位置】

  1. chkconfig --add httpd           【添加我的服务--->到系统服务】
  2. chkconfig httpd on               【设置此系统服务开启】

命令即设置好了开机启动。


PS: mysql开机自启动就是:

#cp support-files/mysql.server   /etc/init.d/mysql.server

----------------------------------------------------------------------------------------------------------------------------------


在Linux中开机自动启mysql
        1) #> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
        2) #> chmod +x /etc/init.d/mysql
        3) #> chkconfig --add mysql
              某些Linux(not RHAS3)还需要这个命令: #> chkconfig --level 345 mysql on
        4) 将下面命令行append到文件 /etc/rc.local (/etc/rc.d/rc.local)
                /bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'

其实我只做第4步,开机后MySQL也能启动



2008-03-20 10:43:00 liqiangqq 阅读数 445
  • Linux系列之走进Linux新世界

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    20450 人正在学习 去看看 马永亮

利用Linux服务自动启动Oracle
1.修改/etc/oratab
编辑/etc/oratab文件,将orcl:/opt/oracle/product/10.2.0/db_1:N改为orcl:/opt/oracle/product/10.2.0/db_1:Y
2.添加Linux服务
cd /etc/rc.d/init.d
touch oracle
chmod a+x oracle
打开oracle文件,添加以下内容
#!/bin/bash
#description:starts the oracle database deamons

ORA_HOME="/opt/oracle/product/10.2.0/db_1"
ORA_OWNER="oracle"

case $1 in
'start')
echo -n "***Starting Oracle***"
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart"
;;

'stop')
echo -n "***Stopping Oracle***"
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"
;;

'restart')
echo -n "***Restarting Oracle***"
$0 stop
$0 start
;;

'isqlstart')
echo "***Starting Oracle iSQL PLus***"
su - $ORA_OWNER -c "$ORA_HOME/bin/isqlplusctl start"
echo "*** Note:You can access service at url:http://$(hostname):5560/isqlplus"
;;

'isqlstop')
echo "***Stopping Oracle iSQL Plus***"
su - $ORA_OWNER -c "$ORA_HOME/bin/isqlplusctl stop"
;;

'emstart')
echo "***Starting Oracle Enterprise Manager 10g Database control***"
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"
echo "Note:You can access service as url:http://$(hostname):1158/em"
;;

'emstop')
echo "***Stopping Oracle Enterprise Manager 10g Database control***"
su - $ORA_OWNER -c "ORA_HOME/bin/emctl stop dbconsole"
;;

'*')
echo "Usage:$0 {start|stop|isqlstart|isqlstop|emstart|emstop}"
exit 1

esac
exit 0
 

执行下列命令测试:
/etc/rc.d/init.d/oracle start
/etc/rc.d/init.d/oracle stop

执行下列命令添加到Linux服务中:
chkconfig --add oracle
chkconfig --list oracle

重新启动服务器。

linux 开机自动启动

阅读数 246

没有更多推荐了,返回首页