Linux shell编程—-利用shell脚本遍历某个目录下的所有文件

bash脚本注册成服务,开机自动启动,chkconfig命令详解

Ubuntu 12.04启动时环境变量加载顺序

 

 

 

 1
我们都知道shell脚本能够做很多的事,今天刚好一个队友要我写个脚本求某个目录下所有java文件的行数总和

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。 

搞清楚Linux下各种环境变量脚本的启动顺序,对于用好Linux,解决各种奇怪的找不着依赖文件的错误有很大的帮助。

 2
ok,为了方便,我把这个目录放到了当前的家目录下,路径为/home/chenguolin/src

 

Ubuntu下启动的时候的的加载环境变量的过程大致为:

 3 我在家目录下建了一个s.sh的脚本,代码如下,等等来分析代码的意思

使用语法: 

/etc/enviroment

[plain] 

chkconfig [–add][–del][–list][系统服务] 或 chkconfig
[–level <等级代号>][系统服务][on/off/reset] 

/etc/profile

#!/bin/bash  

 

  –>/etc/bash.bashrc

function ergodic(){  

chkconfig在没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi
会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。 

  –> /etc/profile

    for file in ` ls $1 `  

 

    –>/etc/profile.d 下的所有.sh文件

    do  

参数用法: 

~/.profile (或~/.bash_profile 或 ~/.bash_login)

        if [ -d $1″/”$file ]  

   –add
 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。

  –>~/.bashrc (如果在运行bash才运行)

        then  

   –del
 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。 

    –>~/.bash_aliases

             ergodic $1″/”$file  

   –level<等级代号>
 指定读系统服务要在哪一个执行等级中开启或关毕。 

    –>/etc/bash_completion

        else  

      等级0表示:表示关机 

 

             wc -L $1″/”$file | cut -d’ ‘ -f1 >>
/home/chenguolin/out  

      等级1表示:单用户模式 

其中前两个是系统环境变量,最后一个是当前用户的局部环境变量。

        fi  

      等级2表示:无网络连接的多用户命令行模式 

 

    done  

      等级3表示:有网络连接的多用户命令行模式 

/etc/enviroment
在系统一些核心组件加载完成后最先调用,很多外围的程序都依赖它运行,如果这里面出现了什么问题,那么很可能导致系统无法正常启动。相当于是系统级别的公共环境变量

}  

      等级4表示:不可用 

/etc/profile 在启动登陆环境时被首先执行。相当于是应用级的公共环境变量

INIT_PATH=”/home/chenguolin/src”  

      等级5表示:带图形界面的多用户模式 

~/.profile在shell被打开时,次于/etc/profile执行。相当于是应用级的用户环境变量

ergodic $INIT_PATH  

      等级6表示:重新启动 

 

 4 分析一下代码的意思

     
需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。 

注意~/.profile是在打开shell时执行的,也就是说如果在它或者它会调用的脚本(一般是.bashrc)里面配置的环境变量,在图形界面下是无效的!

     1 第一行是一个常规的格式,我们要指定这个脚本是由bash来执行

 

如果想要配置在图形界面下依然有效的环境变量,可以放在/etc/prfile.d/下建立一个.sh文件,写入相应内容,例如JAVA_HOME。

     2 第二行是一个脚本的函数

    chkconfig –list
[name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注