编写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系统调用同时从内核取得退出状态或者信号序号以告知子进程是如何结束的。