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,然后向左移动一位后,将所有的参数([email protected])作为一个命令来执行

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

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

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

action start ntpd

这个命令[email protected]就是 ntpd,显示为如下,可以正确表达了意思

start            [OK]

如果移动位置后的[email protected]不是一个命令,那么就是会显示失败

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

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

这里$1是stop ntpd,把$1移动位置后,[email protected]是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

时间: 2024-08-08 05:28:30

linux系统自带函数库介绍的相关文章

【转帖】Windows与Linux系统下的库介绍

Windows与Linux系统下的库介绍 http://embeddedlinux.org.cn/emb-linux/entry-level/200903/12-553.html 库的定义 库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 无论在Windows平台还是Linux平台下都存在大量的库,但由于Windows和Linux的本质不同,因

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格

Linux系统下动态库的生成

Linux系统下动态库的生成 一.简述 Linux下动态库文件的扩展名为 ".so"(Shared Object).按照约定,所有动态库文件名的形式是libname.so(可能在名字中加入版本号).这样,线程函数库被称作libthread.so.静态库的文件名形式是libname.a.共享archive的文件名形式是libname.sa.共享archive只是一种过渡形式,帮助人们从静态库转变到动态库.      小编综合自己学习体会以及网络上较好的内容,以简单的例子介绍动态库文件的生

Linux系统中“动态库”和“静态库”那点事儿【转】

转自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式.ELF(Executable and Linking Format,可执行连接格式)是UNIX系统实验室(USL)作为应用程序二进制

Linux系统中“动态库”和“静态库”那点事儿

摘自http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式.ELF(Executable and Linking Format,可执行连接格式)是UNIX系统实验室(USL)作为应用程序二进制接

Linux系统用户与用户组介绍

一:Linux多用户多任务介绍 Linux/Unix是一个多用户,多任务的操作系统:在介绍Linux账号及账号组管理之前,先简单了解下多用户,多任务操作系统的基本概念. Linux的单用户多任务 鉴于大家对windows比较熟悉,因此先以windows系统为例阐述.当我们以管理员账号administrator用户登录windows系统后,可能需要编辑word文档内容,但在编辑文件的过程中,又可能会同时打开音乐播放器听音乐:同时还可能会打开MSN/QQ等一些程序.其中编辑word文档.开播放器,开

Linux系统中cgroup功能介绍

1  Cgroups简介 1.1 What are cgroups ? Cgroups(控制组)是Linux内核的一个功能,用来限制.统计和分离一个进程组的资源(CPU.内存.磁盘输入输出等).换句话说就是,如果一个进程加入了某一个控制组,该控制组对Linux的系统资源都有严格的限制,进程在使用这些资源时,不能超过其最大的限制数,例如:memory资源,如果加入控制组的进程使用的memory大于其限制,可能会出现OOM错误(关于OOM错误可参看Linux内核OOM机制分析).cgroup本身提供

【Linux笔记】细说linux系统下共享库的命名规范和使用方法

1. Shared Library的优势 共享库,又称动态库或so文件,顾名思义,它可以在可执行文件启动时加载或进程运行期被调用.使用共享库有很多好处,例如(包含但不限于下面提到的场景): 1) 减少了依赖共享库的模块的大小,因为它们不必把共享库提供的功能的实现代码静态编译到自己的模块代码中. 2) 在同一台机器上运行的多个进程会在内存中共享同一份动态库,操作系统采用的这种内存布局方式可以极大地节省机器内存资源. 3) 若很多模块依赖了以共享库形式提供的同一个底层库,则底层库升级时,只需升级该s

Linux系统开机启动流程介绍

一.linux系统进程启动流程图: 二.简单概括描述linux系统从开机到登陆界面的启动过程 1.开机BIOS自检 2.MBR引导 3.grub引导菜单 4.加载内核 5.启动init进程 6.读取inittab文件执行rc.sysinit.rc等脚本 7.启动mingetty进入系统登录界面 三.详细剖析linux系统启动过程 1.POST开机自检 电脑主机打开电源的时候随后会听到滴的一声响系统启动开始了开机自检POST-power on self Test自检开始这个过程中主要是检测计算机硬