du/df

磁盘空间是一种有限资源,du(disk usage) 和df(disk free)命令可以报告磁盘的使用情况

找出某个文件占用的磁盘空间:

[land@localhost test]$ du hello.txt 
4	hello.txt

递归的查考某个目录中所有文件的磁盘使用情况

[land@localhost test]$ du -a www.csdn.net/
104	www.csdn.net/nav/newarticles
0	www.csdn.net/nav/watchers
140	www.csdn.net/nav/news
......

du命令默认显示文件占用的总字节数,以KB,MB或GB为单位显示磁盘使用情况,可以使用-h选项。-b选项以字节为单位打印(默认),-k以KB为单位打印文件大小,-m以MB为单位打印文件大小,-B以指定块为单位打印文件大小。

[land@localhost test]$ du -h hello.txt 
4.0K	hello.txt
[land@localhost test]$ 

-c选项可以计算出文件或目录所占用的总的磁盘空间,-s选项则只输出总计数据,可以和-h配置打印。

[land@localhost test]$ du -sh www.csdn.net/
25M	www.csdn.net/

--exclude选项可以与通配符或单个文件名配合使用;--max-depth 可以限制du遍历目录的层数。

time

可以测量出应用程序的执行时间。time application  ,time命令或执行application,当application执行完毕后,time命令将其real时间,sys时间,user时间输出到stderr中,将application的正常输出发送到stdout中。

[land@localhost test]$ time ls
hello.txt        land@192.168.192.134  output3.tar  www.csdn.net  yes.pub
image.baidu.com  output2.tar           output.tar   yes

real	0m0.003s
user	0m0.001s
sys	0m0.002s

/usr/bin/time -o ouput.txt command  : 可以将相关的时间统计信息写入文件,

/usr/bin/time -a -o output.txt command  :可以将相关的时间统计信息追加到文件的末尾。

-f可以指定输出哪些统计信息及其格式 :

[land@localhost test]$ /usr/bin/time -f "Time spend %U " -a -o timespent.log ls
hello.txt	 land@192.168.192.134  output3.tar  timespent.log  yes
image.baidu.com  output2.tar	       output.tar   www.csdn.net   yes.pub
[land@localhost test]$ cat timespent.log
Time spend 0.00 

参数解释:time命令默认报告3类时间:

Real:指的是壁钟时间即命令开始到执行结束的时间。

User:指进程花费在用户模式的中的CPU时间。

Sys:指进程花费在内核中的CPU时间。

who

可以获取当前登录用户的相关信息,该命令会显示登录名,用户所使用的TTY,登录时间以及登录用户的远程主机名。

TTY:是与文本终端相关联的设备文件,当用户产生一个新终端,对应的设备文件就会出现在/dev中,可以使用tty命令获取当前终端的设备路径。

[land@localhost test]$ who
land     :0           2018-12-13 06:34 (:0)
land     pts/1        2018-12-13 07:26 (:0)

w

w命令可以获取更详细的与用户登录有关的信息。

users

列出当前的登录的用户列表。

last

可以获取来自文件/var/log/wtmp创建之后登录过系统的用户列表,可以追溯到很久

[land@localhost test]$ last
land     pts/1        :0               Thu Dec 13 07:26   still logged in   
land     pts/1        :0               Thu Dec 13 06:50 - 07:15  (00:24)    
land     pts/0        :0               Thu Dec 13 06:50 - 08:04  (01:14)    
land     pts/1        :0               Thu Dec 13 06:43 - 06:48  (00:05)    

ps

ps命令可以显示出系统中进程的详细信息,包括CPU的使用情况,所执行的命令,内存占用,进程状态等。

logger

守护进程和系统进程的日志文件位于/var/log目录中,守护进程sylogd使用syslog标准协议处理日志

向日志文件/var/log/message中写入信息

[root@localhost ~]# logger this is my first to use the logger command 
[root@localhost ~]# tail -n 1 /var/log/messages
Dec 13 08:31:49 localhost land: this is my first to use the logger command
[root@localhost ~]# 

选项-t可以定义消息标签

选项-f可以将其他文件的内容记录到系统日志中。

fsck

检查文件系统,如果文件系统长时间没有检查或者怀疑文件有损坏,Linux在启动的时候会自动执行fsck,也可以手动执行该命令

fsck /dev/sdb1

选项-A可以检查指定设备的所有文件系统。

选项-a指示fsck尝试自动修复错误。

which

用来找好粗某个命令的位置

whereis

用来返回命令的路径,还可以打印出其对应的命令手册以及源代码的路径。

whatis

会输出指定命令的一行简单描述,描述信息是从命令手册中解析出来的。

file

可以用来确定文件的类型。

kill

信号能够中断正在运行的程序,当进程接受到一个信号时,它会执行对应的信号处理程序作为响应,编译型的应用程序使用系统调用kill生成信号,通过kill命令实现。

终止进程,kill命令默认发送SIGTERM信号,信号用来终止进程,进程ID列表中使用空格来分隔各个进程。

[land@localhost ~]$ top &
[1] 2968
[land@localhost ~]$ kill 2968

[1]+  Stopped                 top

选项-s可以指定发送给进程的信号

kill -s SINGAL PID 

hostname/uname

可以输出当前系统的主机名

crontab

使用cron进行调度

允许任务能够按照固定的时间间隔在系统后台自动运行,cron使用一个表,表中保存了需要执行的一系列脚本或命令以及执行的时间。cron常用于调度系统维护任务,例如备份。

cron表指定了执行的时间以及要执行的命令,cron表中的每一行都定义了单条命令,命令可以是脚本或二进制可执行文件。cron表中的每一行均由6个字段组成,每个字段之间以空格分隔并按照以下顺序排列:

分钟,小时,天,月份,星期中的某天,命令。

前5个字段指明命令开始执行的时间,多个值之间使用逗号分隔,星号表示任何时间段,除号表示调度的时间间隔。(在分钟字段上出现*/5表示每隔5分钟)

/etc/crontab文件

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

在每天中每小时的第二分钟执行脚本test.sh

02 * * * * /home/land/test.sh

在每周日的时候,每隔2小时执行脚本script.sh

00  /2 * * 0 / home/land/scripth   

crontab命令采用交互式或使用预先写好的文件

crontab -e 

02 * * * 1  /home/land/test2.sh

执行cron作业使用的权限同创建crontab的用户的权限相同,如果需要执行更高的权限命令,需要以root用户身份执行crontab命令。

crontab -i 可列出当前用户的cron表

crontab -r 可以删除当前用户的cron表。

useradd

用来创建新用户

[land@localhost ~]$ useradd xixi -p 123456 -m

deluser

用来删除用户

[land@localhost ~]$ deluser xixi --remove-all-files

cssh

用于修改用户的默认shell

[land@localhost ~]$ chsh xixi -s SHELL

passwd

用于修改用户的密码,不加任何参数,则默认修改当前用户的密码

[land@localhost ~]$ passwd land

addgroup

创建一个新的用户组

[land@localhost ~]$ addgroup mysql

在创建组的时候,将一个特定的用户,添加到组中

[land@localhost ~]$ addgroup xixi mysql

delgroup

删除一个用户组

[land@localhost ~]$ delgroup mysql

 

 

参考《Linux Shell 脚本攻略》