Shell学习之系统管理相关命令

本节为Shell学习篇的最后一篇,主要讲解磁盘管理du、df,进程管理ps、top、pgrep、kill等,以及任务调度crontab。


du, df

du (disk usage) 主要是查看文件占用磁盘情况, df(disk free)则是查看磁盘可用空间信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
du args.txt #默认以字节为计算单位
du -a filestore/ #递归输出目录及文件
du -h args.txt #以更友好的方式进行打印
#总计文件占用信息,有一个total汇总信息
du -c args.txt temp.txt
du -c filestore/
du -c *.txt
du -sh filestore/ #-s 合计, 只打印总计信息
#特定单位打印, b 字节, k kB,m MB
du -b file
du -k file
du -m file
du -B BLOACK_SIZE file
du --exclude "*.txt" files #包括
du --max-depth 2 filestore/
#找出文件中最大的10个文件(包含目录)
du -ak filestore/ | sort -nrk 1 | head
#找出文件中最大的10个文件(排除目录)
find . -type f -exec du -k {} \; | sort -nrk 1 | head
df -h #打印磁盘可用空间信息

ps, top

ps 查看进程相关信息:

1
2
3
4
5
6
ps -f
ps -e | head
ps -eo comm,pcpu | head #显示需要输出的列
ps -eo comm,pcpu --sort -pcpu | head
top #显示进程运行状况

kill, killall

kill 进行给进程发送信号,可以终止线程:

1
2
3
4
kill -l
kill -9 tomcat
killall -9 gedit

crontab

在shell中进行任务调度时,一般使用cron进行任务调度, 其中,cron的每一条目都由6部分组成:

  • 分钟(0-59)
  • 小时(0-23)
  • 天(1-31)
  • 月份(1-12)
  • 工作日(0-6)
  • 命令

其中(*)指定命令应该在每个阶段都执行命令,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# task.cron
00 02 * * * /home/leon/script.sh #每天凌晨2点执行脚本
00 5,6,7 * * * /home/leon/script.sh #每天的5,6,7小时执行脚本
00 */12 * * 0 /home/leon/script.sh #每个星期天的没小时执行脚本
# 运行方式1,(脚本运行):
$ crontab task.cron
# 运行方式2, (行内运行):
crontab<<EOF
02 * * * * * /home/leon/script.sh
EOF
#列出crontab中的任务
crontab -l
crontab -l -u leon
#删除crontab中的任务
crontab -r
crontab -u leon -r

其它一些命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
time ls
who #当前用户
w
users
uptime
last
watch ls
watch -n 5 'ls -l' #每隔5秒输出1次
which ls #输出命令位置
hostname #主机名
uname -n #当前用户名
uname -r #当前系统版本
uname -m #当前系统架构
坚持原创技术分享,您的支持将鼓励我继续创作!