linux系统自带函数库介绍

1 概述

/etc/init.d/functions这个这个系统自带的函数库在/etc/init.d里,很多脚本执行的时候会调用这里的函数。

这个文件首先会设置umask,path,还有语言环境等,然后会设置success,failure,warning,normal四种情况下的字体颜色。

该文件共定义了33个函数

本文将针对CentOS6S上的一些函数的用法进行介绍

2 函数介绍

daemon

启动某个服务。这里的服务名 都是放置/etc/init.d路径下的启动脚本的文件名,如ntpd

函数的$1为服务名

默认用法 函数  服务名

如:daemon  ntpd

函数的$1如果不是服务名,可以有其他的选项,如下

进程服务名放置第4个位置参数$3位,$2可以任意参数

--check,--user,  --pidfile

如:daemon --check start ntpd

进程服务名放置第3个位置参数$2位:

--check=?*,--user=?*,--pidfile=?*,--force,[-+][0-9]*

daemon --check=ntpd ntpd

killproc

杀死某个进程。和 daemon相反的作用

这里$1是服务名,则是放置/etc/init.d路径下的启动脚本的文件名,如ntpd

用法  函数名 服务名

如 killproc ntpd

这里$1不是服务名,为其他参数,如-p,$2是放在在/var/run/服务名.pid的这类文件

用法 killproc -p  pid_file

如  killproc -p /var/run/ntpd.pid

status

返回一个服务的状态,

$1如果是服务名,用法如下

用法 函数 服务名

如 status  ntpd  结果为 ntpd (pid 23767) is running...的提示

如果$1不是函数名,如-p或-l,用法如下

$1=-p,pid_file=$2    $2是文件:/var/run/服务名.pid

$1=-l,lock_file=$2 ,$2是/var/lock/subsys下的文件名

$3为进程名

用法 status $1 $2 $3

如 status -l /var/lock/subsys/atd.pid atd

或 status -p /var/run/atd.pid atd

action

打印$1,然后向左移动一位后,将所有的参数($@)作为一个命令来执行

$@组成的这个命令的返回值如果为真,就打印 $1  [ok],这里的$1是原来的$1

$@组成的这个命令的返回值如果为假,就打印 $1  [FAILED],这里的$1是原来的$1

如ntpd这个指定本身会启动ntp服务,本身执行这个命令就是会成功开启ntpd服务,所有当执行

action start ntpd

这个命令$@就是 ntpd,显示为如下,可以正确表达了意思

start            [OK]

如果移动位置后的$@不是一个命令,那么就是会显示失败

所有用action这个函数,要知道当$1被移动位置后的$@执行的结果,再指定$1的内容,这样才能正确表示意思

执行如下语句,service ntpd stop&>/dev/null本身是一条完整的停止服务的命令

这里$1是stop ntpd,把$1移动位置后,$@是service ntpd stop&>/dev/null,这是一条完整的命令

action "stop ntpd"  `service ntpd stop&>/dev/null`

执行结果如下,命令执行后就可以正确命令执行的结果

stop ntpd                      [  OK  ]

checkpid

验证pid对应的服务是否存在,检查路径/proc下是否已存在pid,如果有一个存在,函数返回值是0,否则函数返回值是1

用法 函数 pid(这里的pid是数字,代表/proc目录下的某个进程文件名称,也是进程号)

如 checkpid  1

__pids_var_run

查看某个服务名是否存在,存在返回状态码0,不存在返回1,3或4

如果$1是进程的服务名

用法  __pids_var_run $1

如  __pids_var_run  atd  进程存在,返回状态码0,这里会把进程号赋值给pid这个变量,但是不打印出来

如果$1不是进程的服务名,就检查$2,$2是放在/var/run/服务名.pid

用法  __pids_var_run $1 /var/run/服务名.pid

如  __pids_var_run  -a  /var/run/atd.pid  进程存在,返回状态码0

pidfileofproc

寻找进程服务名的pid,因为调用了__pids_var_run $1用法,所以仅仅通过pid_file来查找进程id

用法 pidfileofproc  服务名

如  pidfileofproc  atd  ,结果显示pid的进程id

__pids_pidof

通过pidof命令查看进程id

用法 __pids_pidof  服务名

如 __pids_pidof  atd 结果会显示进程id

pidofproc

调用了两个函数来查找进程id,如果要查看服务的进程id,建议用这个脚本来查看更详细

__pids_var_run和__pids_pidof两个函数

用法 pidofproc  进程名

如  pidofproc atd

echo_success,echo_failure,echo_passed,echo_warning

分别输出各类信息,

如成功绿色OK,失败红色FAILED,通过蓝色PASSED,警告黄色WARNING

用法 直接运行函数

如 echo_success

__readlink

将函数后面的每个参数用一行读出,如果参数不存在,则忽略该参数

用法  __readlink $1 $2 $3 ...

如 __readlink  aa aa.bak test.sh 如果这三个参数文件存在,就一行行显示,不存在就直接忽略

strstr

判断$1是否含有$2,如果$1含有$2,那么返回值$?为0,否则为1

用法 strstr $1 $2

如  strstr  abcd bc ,结果为真,返回0

strstr  abxcd bc ,结果为假,返回1

confirm

确认是否真的要运行此服务,如果是y|Y就返回0,C返回2,n|N返回1,我们可以判断返回值来确定是否要进行下一步

用法 confirm

显示 "Start service $1 (Y)es/(N)o/(C)ontinue? [Y]"的提示信息,输入y,Y,n,N,C等

is_ignored_file :检查文件$ 1是备份还是rpm生成的文件,并且应该被忽略

用法 is_ignored_file $1 如果是要被忽略的,就返回0.否则返回1

get_numeric_dev

将设备转换为用10进制或者16进制的格式的数值现在,格式为major:minor

$1可以指定为 指定为fmt或者hex,fmt为10进制,hex为16进制,$2为设备,如/dev/sda

用法 get_numeric_dev $1 $2

如  get_numeric_dev hex /dev/sr0

get_numeric_dev dev /dev/sr0

is_true

判断函数的$1是否为 [tT] | [yY] | [yY][eE][sS] | [tT][rR][uU][eE] 是的话,返回值为0,否则返回值为1

用法  is_true $1

如  is_true  y 结果返回值为0

is_false

判断函数的$1是否为 [fF] | [nN] | [nN][oO] | [fF][aA][lL][sS][eE] 是的话,返回值为0,否则返回值为1

用法  is_false $1

如  is_false  n 结果返回值为0

3 小结

以上只是函数库的一部分,函数在运行的过程可以互相调用。更详细的函数用法,请参考系统文件/etc/init.d/functions

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容