进程和网络管理及计划任务相关问题

ps

Linux ps命令用于显示当前进程 (process) 的状态。

语法

ps [options] [--help]

参数

  • ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
  • -A 列出所有的进程
  • -w 显示加宽可以显示较多的资讯
  • -au 显示较详细的资讯
  • -aux 显示所有包含其他使用者的行程
  • -o 显示指定字段信息
  • -e 显示所有进程,相当于-A
  • -x 显示包括未在终端内的进程,即脱离了终端进程
  • au(x) 输出格式 :
  • USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的记忆体使用率
  • VSZ: 占用的虚拟记忆体大小
  • RSS: 占用的记忆体大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:
  • D: 无法中断的休眠状态 (通常 IO 的进程)
  • R: 正在执行中
  • S: 静止状态
  • T: 暂停执行
  • Z: 不存在但暂时无法消除
  • W: 没有足够的记忆体分页可分配
  • <: 高优先序的行程
  • N: 低优先序的行程
  • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令

ping

Linux ping命令用于检测主机。

执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

语法

ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]

参数说明

  • -d 使用Socket的SO_DEBUG功能。
  • -c # 发送ping包的个数,#表示数值。
  • -f 极限检测。
  • -i<间隔秒数> 指定收发信息的间隔时间。
  • -I<网络界面> 使用指定的网络接口送出数据包。
  • -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
  • -n 只输出数值。
  • -p<范本样式> 设置填满数据包的范本样式。
  • -q 不显示指令执行过程,开头和结尾的相关信息除外。
  • -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
  • -R 记录路由过程。
  • -s<数据包大小> 设置数据包的大小。
  • -t<存活数值> 设置存活数值TTL的大小。
  • -v 详细显示指令的执行过程。

crontab

Linux crontab是用来定期执行程序的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。

crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

而 linux 任务调度的工作主要分为以下两类:

  • 1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
  • 2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

语法

crontab [ -u user ] file

crontab [ -u user ] { -l | -r | -e }

说明:

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数说明

  • -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
  • -r : 删除目前的时程表
  • -l : 列出目前的时程表

时间格式如下:

f1 f2 f3 f4 f5 program
  • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
  • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

df

Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。

语法

df [选项]... [FILE]...
  • 文件-a, --all 包含所有的具有 0 Blocks 的文件系统
  • 文件–block-size={SIZE} 使用 {SIZE} 大小的 Blocks
  • 文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的…)
  • 文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
  • 文件-i, --inodes 列出 inode 资讯,不列出已使用 block
  • 文件-k, --kilobytes 就像是 --block-size=1024
  • 文件-l, --local 限制列出的文件结构
  • 文件-m, --megabytes 就像 --block-size=1048576
  • 文件–no-sync 取得资讯前不 sync (预设值)
  • 文件-P, --portability 使用 POSIX 输出格式
  • 文件–sync 在取得资讯前 sync
  • 文件-t, --type=TYPE 限制列出文件系统的 TYPE
  • 文件-T, --print-type 显示文件系统的形式
  • 文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
  • 文件-v (忽略)
  • 文件–help 显示这个帮手并且离开
  • 文件–version 输出版本资讯并且离开

mail

mail 是 Linux 的邮件客户端命令,可以利用这个命令给其他用户发送邮件。

mail 命令的基本信息如下。

  • 命令名称:mail。
  • 英文原意:send and receive Internet mail。
  • 所在路径:/bin/mail。
  • 执行权限:所有用户。
  • 功能描述:发送和接收电子邮件。
mail -s "标题" 邮件地址 < 要发送的文件

简单练习

1、显示统计占用系统内存最多的进程,并排序。

# 知识点 ps

[root@localhost ~]#ps -eo pid,%mem --sort=-%mem
   PID %MEM
  9832 11.2
 10252  3.7
  1853  3.2
 10120  1.5
   924  1.5
 11074  1.4
 10188  1.2
   798  0.9
 10246  0.9
 10063  0.9
...

# 显示pid 和内存占用,并按内存占用最多的排序




2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"

for版

# 知识点:for、ping
# 思路:1.首先192.168.0.0/24网段指的是192.168.0.{0..254}
# 2.我们只要用for循环分别ping每一个ip,如果取得返回值说明ping通
#!/bin/bash


for j in {0..255};do
	ip=192.168.0.$[j]/24;
	if ping -c1 $ip &> /dev/null;then
		echo "$ip success!"
	else
		echo "$ip fail!"
	fi
done


# 疑问:有办法让该脚本运行更快速吗?
# 有!
# 用并发
#!/bin/bash

for j in {0..254};do 
    ip=192.168.0.$[j]/24;
    {          
    	if ping -c1 $ip &>/dev/null;then
    		echo "$ip success!"         
    	else      
    		echo "$ip fail!"     
    	fi
    } &     

done
wait
    
echo "并发检测完成" 

# 不信你试试啊

while版

#!/bin/bash

i=0

while [ $i -le 255 ]
do
        if  ping 192.168.0.$[i]/24 &>/dev/null;then
                echo "192.168.0.$[i] success!"         
        else
                echo "192.168.0.$[i] fail!"     
        fi
        let i++
done

        echo Done

3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间

# 分析 
# 这个任务可以分解一下:一部分是备份任务。另一部分是计划执行
# 知识点:crontab、tar
[root@localhost bak]#crontab -e
30 01 * * 1-5 tar cJf /root/backup/etcbak-`date -d "1 day ago" +"%Y-%m-%d-%H"`.tar.xz /etc

4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警

# 分析
# 分解任务:1.查询磁盘利用率。2.设定阈值。3.判断。4.发送邮件。5.计划任务
# 知识点:df、crontab、mail
# 获得 最大的磁盘占用率值:df -h|grep /dev/s.*|tr -s " "|cut -d " " -f5|tr -d %|sort -n|tail -1

# 设置阈值80
#!/bin/bash

alarm_threshold=80
mail=`whoami`@`hostname`
max_disk_use=`df -h|grep /dev/s.*|tr -s " "|cut -d " " -f5|tr -d %|sort -n|tail -1`

if [ $max_disk_use -gt $alarm_threshold ];then
        echo "磁盘空间利用率超过80%" |mail -s "Warning alert" $mail
fi


# 测试一下
[root@localhost bak]#. diskCheck.sh 
[root@localhost bak]#mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root                  Fri Apr 17 05:40  18/657   "Warning alert"
& 
Message  1:
From [email protected]  Fri Apr 17 05:40:53 2020
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Date: Fri, 17 Apr 2020 05:40:53 +0800
To: [email protected]
Subject: Warning alert
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=utf-8
From: [email protected] (root)
Status: R

磁盘空间利用率超过80%

# 设置计划任务
[root@localhost bak]#crontab -e
*/10 * * * 1-5 /bin/bash /root/bak/diskCheck.sh

猜你喜欢

转载自blog.csdn.net/FlamencaH/article/details/105571753