应用一

  • 描述:根据pgrep查询出来的pid执行kill操作
  • 功能分析:具体需要实现以下功能
  • 通过传入的进程名(通过正则精确匹配)称查询pid
  • 将查询的pid以,连接成一个完整的字符串
  • 将查询pid赋值给参数
  • 执行kill + 参数
#!/bin/bash
pids=`pgrep "^$1$"`
for pid in ${pids[@]}
do
  echo $pid
  sudo kill $pid
done

应用二

需求

  • 说明:打包/var/data下的前四天数据(文件夹以日期YYYY-MM-DD命名),打包完后上删除文件
  • 功能分析
  • 进入数据目录
  • 设置日期变量,获取前四天日期
  • 格式化日期为YYYY-MM-DD
  • 对比是否有前一天文件夹
  • 如果有则开始压缩
  • 压缩完后删除原文件
  • 上传完成后删除
  • 所用Linux命令:cd date ls if tar

相关命令

  • 获取一天以前的日期并以YYYY-MM-DD格式输出
today=$(date -d "1 day ago" +"%Y-%m-%d")
  • 获取当前文件目录 赋值到变量中
dirs=$(ls)
  • 对比是否有前一天文件夹: 先循环dirs,然后和today变量进行对比,如果存在则压缩前一天文件并在压缩完成后删除原文件
for file in $dirs;do
echo $file;
  //对比文件,如果存在则执行相应操作
  if [ "$today" = "$file" ];
  then
     tar -czf demo.tar.gz $file
     rm -rf $file
     exit 127
  fi
done
  • 完整脚本如下
today=$(date -d "1 day ago" +"%Y-%m-%d")
echo "the date dir is $today"
dirs=$(ls)
echo "the list of file or dirs is $dirs"
for file in $dirs;do
echo $file;
  #对比文件,如果存在则执行相应操作
  if [ "$today" = "$file" ];
  then
     tar -czf demo.tar.gz $file
     rm -r $file
     exit 127
  fi
done