AIX 添加开机启动项
在学习本主题之前,还是先学习一些AIX关于启动的基础知识,如果你只关心如何开机自动重启程序,请跳过第一章、第二章。
----------------------------
第一章 AIX开机启动过程介绍
----------------------------
不从最开始说起了,只说从AIX kernel被装载到内存开始。
1、AIX系统存储在BLV的kernel在内存中创建/(root),/usr/和/var文件系统。
要注意,这里所说的文件系统,包括kernel在启动过程中都是存储在RAM(内存)中的。
他们没有权限访问BLV之外的任何内容。
2、文件系统被装载到RAM之后,kernel开始执行init进程,这个时候init进程开始接管系统启动进程。
3、AIX kernel把init进程的PID设为1,这个进程是作为parent,root进程存在的,是AIX系统中运行的其他所有进程的父进程.当init进程被装载并在启动过程运行,init调用rc.boot.
4、rc.boot文件在AIX系统启动过程中有三个重要的作用。
(1)、第一部分是rc.boot初始化了系统的硬件,使其为系统的启动做好准备。通过系统设置命令cfgmgr,一小部分系统启动需要的驱动被配置。
(2)、第二部分是文件系统/,/usr,/var和页面空间被装载。在这些文件系统被装载以后,init被硬盘上的PID为1的init进程所替代,同时RAM被清空。
(3)、第三部分和最后部分,rc.boot,实际的init进程是从硬盘上运行的。
当init被执行后,/etc/inittab文件被堵去,同时里面的每一条都被执行。
在这个过程中,/tmp文件系统正被装载到硬盘上。
现在,系统正在启动的最后过程中,cfgmgr命令再一次运行把剩下的在第一部分没有被rc.boot运行的驱动运行起来。
5、init进程被执行以后,下一步就是init会打开/etc/inittab,并且执行里面的内容。 ----------------------------------------------
第二章 AIX启动的相关命令知识
----------------------------------------------
1、确认当前系统的运行级别
在系统维护或者切换系统运行级别之前,你也许需要检查当前系统的运行级别。
cat /etc/.init.state
lsitab init 2、显示系统运行级别的更改纪录
提示:确保bosext2.acct.obj 代码安装在你的系统上。
(1) 以root身份登陆系统.
(2)执行/usr/lib/acct/fwtmp </var/adm/wtmp |grep run-level
得到类似的结果:
run-level 2 0 1 0062 0123 697081013 Sun Feb 2 19:36:53 CST 1992
run-level 2 0 1 0062 0123 697092441 Sun Feb 2 22:47:21 CST 1992
run-level 4 0 1 0062 0123 698180044 Sat Feb 15 12:54:04 CST 1992 3、改变系统运行级别基础知识
当系统第一次启动之后,系统按照/etc/inittab文件的内容,进入默认的系统运行级别,直到系统管理员发出改变系统级别的命令。
下面是系统定义的系统运行级别:
0-9 当init命令改变系统运行级别为0-9时,将会杀掉当前系统级别下正在运行的所有进程,并进入新的系统运行级别。
0-1 为未来的操作系统保留
2 默认运行级别
3-9 可以根据用户的需求进行自定义
a,b,c 当init命令接收到运行a,b或者c的时候,init命令不杀死任何当前运行的进程,只是启动新运行级别内定义的新进程。
Q,q init命令将会重新检查/etc/inittab文件
S、s 维护模式
M、m 维护模式 4、改变系统运行级别
(1)、检查/etc/inittab文件,确认你想改变的系统运行级别。
(2)、使用wall命令通知所有用户你将改变
(3)、使用smit telinit快速改变系统运行级别
(4)、使用init n或者telinit n命令改变系统运行级别,其中n为系统运行级别。 5、改变/etc/inittab文件
在有些情况下,你需要增加、改变、列出、删除/etc/inittab文件中的记录。/etc/inittab文件定义了哪些进程在哪个系统运行级别里运行。
当你运行init命令的时候,它将读取/etc/inittab文件。每一条记录定义了一个进程在一个进程的运行。
(1)、/etc/inittab文件参数
Identifier 定义了唯一的标识(1到14个字符)。
Run Level 定义了进程所在的运行级别(1到20个字符)。 Action 定义了init命令将为此条进程执行的操作,包括:respawn,wait,once,boot,bootwait,powerfail,powerwait,off,hold,ondemand,initdefault和sysinit.
respawn 如果进程不存在,Start这个进程,不等待它的结束,继续扫描inittab文件。如果这个进程结束了,restart它。
wait Start这个进程,并且等待它的结束。
once Start这个进程,并且不等待它的结束。如果这个进程结束,不restart它。
boot 仅在系统重启时执行。
bootwait 当服务第一次从单用户变为多用户时执行
powerfail 仅当如果init收到一条power错误时执行命令
powerwait 仅当如果init收到一条power错误时执行命令,同时一直等待进程的结束,然后才继续扫描inittab文件。
off 如果进程正在运行,发出SIGTERM信号,然后在20秒内执行SIGKILL
ondemand 这个参数等同于respawn,但是只在a,b,c级别运行。
initdefault 只有当init初始化执行,才扫描内容。
sysinit 在登陆前,在init得到权限控制之前执行内容。
Command 包含需要执行的shell命令。
(2)、下面的命令可以支持对/etc/inittab文件进行操作。
chitab 改变/etc/inittab文件的记录。
lsitab 列出/etc/inittab文件的记录。
mkitab 往/etc/inittab文件里增加记录。
rmitab 从/etc/inittab文件里删除记录。
(3)、命令举例
增加纪录
往/etc/inittab文件里增加一条记录,执行
mkitab Identifier:Run Level:Action:Command
例如:tty002:2:respawn:/usr/sbin/getty /dev/tty2
改变记录
改变/etc/inittab文件里的一条记录,执行
chitab Identifier:Run Level:Action:Command
例如:将上例的运行级别从2改为2和3,chitab tty002:23:respawn:/usr/sbin/getty /dev/tty2
列出记录
列出/etc/inittab文件中的所有记录
lsitab -a
列出某个指定的记录
lsitab Identifier
例如:lsitab tty2
删除记录
rmitab Identifier
例如:rmitab tty2 6、执行运行级别脚本
运行级别脚本允许用户在更改运行级别时启动和停止所选择的应用程序。以 K 开头的脚本是停止脚本,以 S 开头的脚本是启动脚本。
这些脚本保存于它们所从属的运行级别的特定子目录中,每个子目录的格式为 rcn.d,其中 n 表示运行级别:
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc/rc.d/rc6.d
/etc/rc.d/rc7.d
/etc/rc.d/rc8.d
/etc/rc.d/rc9.d
---------------------------------------
第三章 开机自动运行程序
---------------------------------------
开机启动程序的方法有很多,我只谈谈思路,然后给出一些解决方法。
从第一章AIX系统启动过程,我们知道AIX系统在启动过程中,会扫描inittab文件的内容,并执行它。
1、那么,我们可以通过直接修改inittab文件,使系统在开机重启时运行我们的命令。
2、也可以通过inittab文件里指向的脚本(rc.local、rc.d组,后面会详细介绍)。
间接使系统在开机重启时运行我们的命令。
3、其他方法:如使用crontab的定时任务功能,间接启动脚本,
这种方法不是开机后马上运行,要看crontab里设置的时间间隔的长短而定。
一、通过rc.local启动(最简单的方法)
rc.local是inittab里的一个脚本指向,通过运行lsitab -a|grep rc.local ,我们可以得到rc.local:2:once:/etc/rc.local > /dev/console 2>&1
1、 mkitab -i rcnfs "rc.local:2:once:/etc/rc.local > /dev/console
2>&1" #如果inittab文件里没有关于rc.local的信息,可以通过此命令创建脚本。
注意系统运行级别要与你想要运行的系统运行级别一致,这里系统运行级别是2。
2、touch /etc/rc.local #新建rc.local文件
3、chmod 700 /etc/rc.local #设置执行权限
4、把执行脚本放到/etc/rc.local里之后,AIX系统在重新启动时,就会运行/etc/rc.local里的脚本了。
1. 自动启动定制的软件
在系统引导时, init进程顺序检测/etc/inittab文件, 决定在引导过程中进行什么样的操作.如果应用,
进程或其它的用户操作需要在系统引导过程中进行,
则要在/etc/inittab文件中加入相应的条目.通常的做法是创建一个名为rc.local的脚本文件,
将所有要在系统引导过程中启动的用户应用写入该脚本文件中. 该脚本文件可以在/etc/inittab文件中被调用,
通常是在所有系统应用和服务启动后, 在用户登录被允许之前被调用. 位置通常是在主控登录的条目前.
下面是一个例子:
rc.local:2:wait:/etc/rc.local > /dev/console 2>&1
在上面的条目中, init将在执行余下的条目之前等待该脚本程序的完成.如果进程, 应用或命令需要通过特定的用户运行, 则可在运行的命令中加入su命令.
如: su myuser "-c /usr/bin/myapp"
建议在脚本程序中加入应用开始启动和完成启动的输出提示.
如:
#!/bin/ksh
echo "Starting User Applications...."
echo "Starting Application XYZ"
su myuser "-c /usr/bin/myapp"
echo "Startup of User Applications completed"
2. 自动停止定制的软件
shutdown命令用于关闭AIX系统. 在此操作中会关闭所有AIX子系统及文件系统.如果名为/etc/rc.shutdown的脚本程序存在,
系统会首先执行该脚本程序中的命令. 在该脚本程序中可以加入关闭用户应用的命令. 建议在脚本程序中加入应用停止运行和完成停止运行的输出提示.
如:
#!/bin/ksh
echo "Stopping User Applications...."
echo "Stopping Application XYZ"
[ commands to stop application ]
echo "Shutdown of User Applications completed"
二、通过/etc/rc.d脚本启动(需要编写start\stop脚本)
/etc/rc.d是inittab里的一组脚本指向,通过运行lsitab -a|grep rc.d,我们得到
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
l7:7:wait:/etc/rc.d/rc 7
l8:8:wait:/etc/rc.d/rc 8
l9:9:wait:/etc/rc.d/rc 9
1、cd /etc/rc.d/ #进入/etc/rc.d目录
2、cd /samples #进入/etc/rc.d/samples 目录,可以得到K70lpd、README.txt、S70lpd三个文件。
这里只是简单的模仿K70lpd和S70lpd,更高级的方法,留给大家自己研究了。
下面,我们分别创建自己的启动和结束脚本。
例如:
# more K69oa
#!/bin/ksh
##################################################
# name: K69oa
# purpose: sample script that start or stop oa.
#转载请注明From:http://hi.baidu.com/空气人儿
##################################################
case "$1" in
start )
WebSphere/AppServer/bin/startServer.sh server1
IBMHttpServer/bin/apachectl start
;;
stop )
WebSphere/AppServer/bin/stopServer.sh server1
IBMHttpServer/bin/apachectl stop
;;
* )
echo "Usage: $0 (start | stop)"
exit 1
esac
# more S69oa
#!/bin/ksh
##################################################
# name: S69oa
# purpose: sample script that start or stop oa.
#转载请注明From:http://hi.baidu.com/空气人儿
##################################################
case "$1" in
start )
WebSphere/AppServer/bin/startServer.sh server1
IBMHttpServer/bin/apachectl start
;;
stop )
WebSphere/AppServer/bin/stopServer.sh server1
IBMHttpServer/bin/apachectl stop
;;
* )
echo "Usage: $0 (start | stop)"
exit 1
esac
3、chmod 700 这两个脚本
4、把这两个脚本放到/etc/rc.d/rc2 下。
5、使用shutdown -rF重新启动机器时,会自动运行放在/etc/rc.d/rc2下的S69oa脚本中的stop部分;
系统重启之后,系统会自动运行放在/etc/rc.d/rc2下的S69oa脚本中的start部分。
三、自定义启动脚本(与方法一基本相同,自己研究吧)
参考:
http://publib16.boulder.ibm.com/pseries/en_US/infocenter/base/43_docs/aixbman/baseadmn/toc.htm
http://www.ibm.com/developerworks/aix/library/au-speakingunix_unixboot/index.html
转载自:http://hi.baidu.com/空气人儿
AIX 添加开机启动项的更多相关文章
- windows添加开机启动项
http://www.cnblogs.com/jokey/archive/2010/06/17/1759370.html添加开机启动项(通过注册表) 例子:增加QQ开机启动项 第一步:找到注册表的启动 ...
- Linux 添加开机启动项的三种方法
linux 添加开机启动项的三种方法. (1)编辑文件 /etc/rc.local 输入命令:vim /etc/rc.local 将出现类似如下的文本片段: #!/bin/sh## This scri ...
- centos7如何添加开机启动项?
centos7提供开启服务启动的方式: 1.系统服务管理命令,如果是通过yum安装的软件,开机启动脚本,已经自动创建好了,直接执行如下命令 nginx.service后缀可以省略 systemctl ...
- Win10怎么添加开机启动项?Win10添加开机自动运行软件三种方法
Win10管理开机启动项的方法相信大家已经非常熟悉,msconfig命令各系统都通用,那么很多用户发觉Win10和Win7 XP等系统不同,没有启动文件夹,那么我们怎么添加开机启动项呢?如晨软件或程序 ...
- Windows手动添加开机启动项
@方法1. 添加程序完整路径到注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下 或者添加到HKEY_CURREN ...
- CentOS7 添加开机启动项
centos6 加入开机启动: vim /etc/rc.d/rc.local 注意命令不要出错,重启后生效 或者 centos 7 下: vim /lib/systemd/system/ ...
- gnome3.X添加开机启动项
背景:升级gnome后发现gnome-session-properties不见了,想把sslocal随机启动遇到了麻烦... 特别说明:此为图形桌面开机启动项,因此只有通过图形桌面登陆用户后才能启动. ...
- linux添加开机启动项的方法介绍
使用chkconfig命令可以查看在不同启动级别下课自动启动的服务(或是程序),命令格式如下:chkconfig --list可能输出如下:openvpn 0:关闭 1:开启 ...... 6:关闭 ...
- Ubuntu下添加开机启动项的2种方法
1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本,所以我们可以直接在/etc/rc.local中添加启动脚本.当然要添加到语句:exit 0 前面 ...
随机推荐
- 在linux下安装memcacheq
#!/bin/bash mkdir ~/build cd ~/build wget http://download.oracle.com/berkeley-db/db-5.1.19.tar.gz .t ...
- Linux主机在LNMP环境中同时运行多个PHP版本
这次遇到的问题是,客户网站已经使用PHP5.4运行多个网站程序,但是新安装的程序需要使用PHP5.3. 从我之前的经验来看,给网站更换PHP版本,可能会带来意想不到的后果.比如,之前某客户Discuz ...
- 001.XE3添加TPerlRegEx
TPerlRegEx 官方下载地址:http://www.regular-expressions.info/download/TPerlRegEx.zip 下载解压,打开pcre.pas文件可看到,直 ...
- 聊天工具实现winform端实现
最近在找能够实现客户端点对点聊天的技术,通过github我发现了一个项目,它能够支持webscoket通讯,服务端是由c#socket完成. 我要的是winform端的通信,所以在他的基础上,增加了桌 ...
- SQL日期(转)
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割 (年.月.日等),然后仅仅用分割出来的年.月.日等放在几个 ...
- VM 启动时报错:Failed to lock the file
http://www.cnblogs.com/kristain/articles/2491966.html Reason: Failed to lock the fileGoogle 了一下, 在網路 ...
- sbrk and coreleft
一.sbrk 函数来源:TC2.0.Linux 函数名: sbrk 功 能: 增加程序可用数据段空间,增加大小由参数 incr决定 . 返回值:函数调用成功返回一指针,指向新的内存空间.函数调用失败则 ...
- CATransition的动画效果类型及实现方法--老代码备用参考
实现iphone漂亮的动画效果主要有两种方法,一种是UIView层面的,一种是使用CATransition进行更低层次的控制, 第一种是UIView,UIView方式可能在低层也是使用CATransi ...
- Android常用的工具类(转)
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...
- HTTP Keep-Alive详解
HTTP是一个请求<->响应模式的典型范例,即客户端向服务器发送一个请求信息,服务器来响应这个信息.在老的HTTP版本中,每个请求都将被创建一个新的客户端->服务器的连接,在这个连接 ...