【总结别人的经验之上而成,并非完全copy。】
touch filename.sh之后,在vim中编写shell代码
vim显示行号
:set number

内容完全参考Linux Shell脚本实现根据进程名杀死进程,代码如下

#!/bin/sh
#根据进程名杀死进程
if [ $# -lt 1 ]
then
  echo "缺少参数:procedure_name"
  exit 1
fi

PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
  echo "Kill the $1 process [ $i ]"
  kill -9 $i
done

或者

ps -ef | grep procedure_name | grep -v grep | awk '{print $2}' | xargs kill -9

执行shell脚本,使用sh -x filename.sh,加上-x参数,会将执行的每条命令显示出来。首先确保文件具有执行权限,chmod a+x test.sh
遇到的问题
(1)Linux下执行.sh脚本错误:command not found
解决:因为变量定义时候,等号的两边使用了空格。在定义shell脚本的变量时在变量名和等号之间是不允许有空格的。

1.定时执行shell—crontab

使用crontab定时执行shell脚本。

crontab -e

每间隔20分钟,执行一次任务,然后直接写上命令*/20 * * * * /home/username/processCheck.sh
然后可以在/var/spool/cron/crontabs目录下找到与当前用户名一样名字的文件,查看文件内容,即是刚刚编写的内容。

对于crontab -e 与 直接编辑 /etc/crontab ,还是有区别的,具体没尝试,看到博文Linux配置定时,使用 crontab -e 与 直接编辑 /etc/crontab 的区别

(系统级的)做系统级配置我们会直接配置 /etc/crontab
(用户级的)一般还是建议大家使用 crontab -e ,这样系统也会帮着检查我们配置的脚本语法。

ps:另外的思路:在shell中写上do…while死循环,然后结合sleep 1200s也可以实现类似的效果

2.find 与时间结合

另外,find,还可以与mmin一起使用,比如:批量删除多长时间以前的文件,可以使用 find dirName -mmin +20 -exec rm {} \;
还有一种传统方法,进行时间比较的写法,详见shell脚本——比较当前时间与文件的创建时间间隔。代码如下[转载过来的]

#!/bin/bash  

dir=`ls /root/20160705/`  
DIR_PATH="/root/20160705/"  
for fi in $dir  
do  
    FILE_NAME=${DIR_PATH}${fi}  
    echo $FILE_NAME  
    a=`stat -c %Y $FILE_NAME`  
    b=`date +%s`  
    if [ $[ $b - $a ] -gt 120 ];then  
       echo "delete file:$FILE_NAME"  
       rm -rf $FILE_NAME  
    fi  
done  

echo "done"

3. pidof命令与strace命令

pidof命令用于查找指定名称的进程的进程号id号。
strace命令,可以跟踪程序的调用

其他

ls -alh查看到的时间,是文件修改时间。时间一共有:
• modification time(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。
• status time(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。
• access time(atime,存取时间)