编写shell程序,完成以下功能

编写shell程序,完成以下功能

1.每隔一个小时(测试可以把时间间隔设置为1分钟)把当前系统正在运行的全部进程信息写入一个日志文件
提示:可以用crontab配置定时任务,用ps命令生成进程信息
2.每天生成一个新日志文件,日志文件名以ps-yyyy-MM-dd.log命名,其中yyyy用四位年份值代替,MM用两位月份值代替,dd用两位日期值代替。文件的权限为600。
3.如果文件不存在,则按照命名规则创建新文件,如果日志文件已存在,则把新日志追加方式写入文件
4.日志文件以月份进行分类,例如2022年3月份所有的日志文件存入’202203’的目录下,所有目录存入ps-log目录下
5.目录不存在则按照命名规则创建目录
6.自动删除1年前的的日志信息(目录和文件都删除)

在编程之前我们需要先了解一下shell

1、 什么是shell
Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
shell充当一个桥梁:
a.将使用者的命令翻译给核心(kernel)处理。
b. 同时,将核心的处理结果翻译给使用者。
在这里插入图片描述

2、 shell的特性
(1) 运行程序
shell类似于一个程序启动器,shell将程序载入内存并运行它们。
(2) 管理输入和输出
使用<、>和|符号可以将输入输出重定向。这样就可以告诉shell将进程的输入和输出连接到一个文件或是其他进程。
(3) 可编程
3、 shell如何运行程序
shell用fork建立新进程,用execv函数簇在新进程中运行用户指定的程序,最后shell用wait命令等待新进程结束。wait系统调用同时从内核取得退出状态或者信号序号以告知子进程是如何结束的。
shell运行程序流程

开始编写

1、 终端连接服务器
ssh root@8.129.58.123
在这里插入图片描述

2、 切换目录到/home ,查看已有文件,然后创建shell程序
cd /home
ls
vim ps.sh
在这里插入图片描述

3、 编写shell程序
在这里插入图片描述

Esc退出输入模式进入命令模式
Shift+英文:(冒号键)进入底线命令模式
输入wq,保存并退出,即可完成第一个shell文件的编写。
4、 查看文件是否创建成功,并赋予运行权限
Ls
chmod 744 ps.sh
在这里插入图片描述

可见ps.sh文件已经可以运行
5、 创建定时任务
crontab -e
在这里插入图片描述

按i进入输入模式,输入以下命令
0 */1 * * * /home/ps.sh >> /var/log/ps-log/rewrite.log 2>&1
按之前的创建ps.sh文件一样的方法wq保存并退出
查看定时任务是否设置成功
crontab -l
在这里插入图片描述

6、切换目录到/var/log/ps-log,查看文件是否已经自动生成
在这里插入图片描述

7、 大功告成
在这里插入图片描述
在这里插入图片描述

shell完整代码:

#!/bin/bash
#author ShaneTang
#Automatic process information storage
date=`date +%Y%m`
nowdate=`date +%Y-%m-%d`".log"
DATA_PATH=/var/log/ps-log
#创建文件夹
if [ ! -d $DATA_PATH/${date} ]; then
 mkdir $DATA_PATH/${date}
fi
#创建文件
if [ ! -f $DATA_PATH/"$date"/"$nowdate" ]; then
        touch  $DATA_PATH/"$date"/$nowdate
        chmod 600 $DATA_PATH/"$date"/$nowdate
fi
#将进程消息写入文件
echo `ps -A` >> $DATA_PATH/"$date"/${nowdate}
#记录重写
echo $(date "+%Y-%m-%d %H:%M:%S")"重写日志"
#删除一年以前的旧文件
find $DATA_PATH -mtime +365 -name "*" -exec rm -rf {} \;

对于变量的使用我还不太熟练,如果你发现我的问题欢迎私聊我一起学习😂😂😂

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️雲野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值