Linux - 简易shell脚本编写,以开机日志为例,编写一个用于查看Linux进程启动的脚本

在Linux开发中,开发者为了能够了解Linux的进程启动过程或者启动顺序,往往需要借助一些工具或日志,今天这篇简短的文章就是介绍编译一个Linux开机启动脚本,记录各个进程模块的启动时间以及顺序。

准备任务,在Linux服务器下编写一个shell脚本,脚本的可以存在任何你可以访问的目录,笔者存在根目录下,如果是刚入手Linux的话,具体的shell脚本语法可以查看下面这个链接,里面有非常详细的语法使用介绍。

shell脚本语法使用:http://www.runoob.com/linux/linux-shell-basic-operators.html

那接下来就是编写脚本了,这里笔者已经写好了,但是我会具体介绍他们的意义于作用。


上图就是笔者编写的简单shell脚本,第一个echo为在执行开始时打印字符“================ printf start =================”。

logpath=/mnt/log 这一句是log需要存储在哪个目录,这里为/mnt/log目录

logname=$logpath/printf.log 这一句是log命名,这里为printf.log

if [ -d $logpath ]; then
        echo "$logpath dircetory exists..."
else
        mkdir $logpath
fi

上述脚本代码意为判断/mnt/log是否为目录,如果是表示存在,echo一个字符串 "$logpath dircetory exists...",其中$logpath表示变量logpath指向的目录地址。如果不是目录则表示不存在,创建logpath变量所指向的目录文件夹。

if [ -f $logname ]; then
        echo "$logname file exists..."
else
        touch $logname
fi

上述脚本代码意为判断/mnt/log/printf.log是否为常规文件,如果是则表示该常规文件存在,echo一个字符串echo "$logname file exists...",其中$logname表示变量logname指向的文件存放绝对路径。如果该常规文件不存在,创建logname变量所指向的日志文件。

if [ $1 ]; then
        echo "$1 loading..." >> $logname
fi

上述脚本代码意为判断第一个参数是否为null,如不为null,将其输出到之前的logname文件。

echo "################# $(date +%F%t%T) #################" >> $logname
echo ================ printf end =================
exit 0

上述脚本代码意为输出当前时间到之前的logname文件,其中%F的意义为完整日期格式,等价 %y-%m-%d;%t为输出一个制表位;%T为时间,等于%H:%M:%S。

最后一个echo为在执行结束时打印字符“================ printf end =================”。

完整的代码:

#!/bin/sh
#
# printf
#
# This script is Record the process of starting up and the order of startup.
#
# author Engineer-jsp.
echo ================ printf start =================
logpath=/mnt/log
logname=$logpath/printf.log

if [ -d $logpath ]; then
        echo "$logpath dircetory exists..."
else
        mkdir $logpath
fi

if [ -f $logname ]; then
        echo "$logname file exists..."
else
        touch $logname
fi

if [ $1 ]; then
        echo "$1 loading..." >> $logname
fi

echo "################# $(date +%F%t%T) #################" >> $logname
echo ================ printf end =================
exit 0

输出效果:


使用方式:


小伙伴们可以多写写,熟悉语法,因为编译Android系统也用得到这些知识,尤其是自定义rom的时候,比如一些知名的手机厂商,OPPO、小米、华为、魅族等等,他们都是通过修改Google Android原生系统代码,修改对应的一些模块架构,诸如CPU的支持、手机硬件模块的支持、主板的支持等,以公版或补丁形式,对自己的产品进行支持开发。

发布了97 篇原创文章 · 获赞 285 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/jspping/article/details/80948680
今日推荐