futurezone 2014-04-03
系统管理命令:df、top、free、at、lp、adduser、groupadd、kill、crontab
1.df
df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。
df [options]
-a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k 以k字节为单位显示。
-i 显示i节点信息,而不是磁盘块。
-t 显示各指定类型的文件系统的磁盘空间使用情况。
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T 显示文件系统类型。
-h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。
-H:与-h参数相同,不过在根式化的时候,采用1000而不是1024进行容量转换
2.top
top命令用来显示执行中的程序进程,使用权限是所有用户。
top [-d] | top [-bnp]
参数:
-d :后面可以接秒数,就是整个程序画面更新的秒数。预设是
5
秒;
-b :以批次的方式执行 top ,还有更多的参数可以使用喔!
通常会搭配数据流重导向来将批次的结果输出成为档案。
-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
-p :指定某些个
PID
来进行观察监测而已。
在 top 执行过程当中可以使用的按键指令:
? :显示在 top 当中可以输入的按键指令;
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
<空格>:立刻刷新。 <br />P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。 <br />t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。 <br />W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
top - 09:32:45 up 2 days, 23:20, 3 users, load average: 0.00, 0.00, 0.00 Tasks: 174 total, 1 running, 171 sleeping, 2 stopped, 0 zombie Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0% Mem: 2047732k total, 787016k used, 1260716k free, 105400k buffers Swap: 3145720k total, 0k used, 3145720k free, 282548k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15851 root 20 0 14940 1236 900 R 0.3 0.1 0:00.03 top 1 root 20 0 19236 1432 1156 S 0.0 0.1 0:01.15 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.40 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.25 migration/1 7 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1 8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1 9 root RT 0 0 0 0 S 0.0 0.0 0:00.51 migration/2
top 也是个挺不错的程序观察工具!但不同于 ps 是静态的结果输出, top 这个程序可以持续的监测 (monitor) 整个系统的程序工作状态,例如上面的范例一所示啊! 在预设的情况下,每次更新程序资源的时间为 5 秒,不过,可以使用 -d 来进行修改。 top 主要分为两个画面,上面的画面为整个系统的资源使用状态,基本上总共有六行, 显示的内容依序是:
• 第一行:显示系统已启动的时间、目前上线人数、系统整体的负载(load)。 比较需要注意的是系统的负载,三个数据分别代表 1, 5, 10 分钟的平均负载。 一般来说,这个负载值应该不太可能超过 1 才对,除非您的系统很忙碌。 如果持续高于 5 的话,那么.....仔细的看看到底是那个程序在影响整体系统吧!
• 第二行:显示的是目前的观察程序数量,比较需要注意的是最后的 zombie 那个数值,如果不是 0 ,嘿嘿!好好看看到底是那个 process 变成疆尸了吧?!
• 第三行:显示的是 CPU 的整体负载,每个项目可使用 ? 查阅。需要观察的是 id (idle) 的数值,一般来说,他应该要接近 100% 才好,表示系统很少资源被使用啊! ^_^。
• 第四行与第五行:表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况。
• 第六行:这个是当在 top 程序当中输入指令时,显示状态的地方。 例如范例四就是一个简单的使用例子。
至于 top 底下的画面,则是每个 process 使用的资源情况。比较需要注意的是:
• PID :每个 process 的 ID 啦!
• USER:该 process 所属的使用者;
• PR :Priority 的简写,程序的优先执行顺序,越小越早被执行;
• NI :Nice 的简写,与 Priority 有关,也是越小越早被执行;
• %CPU:CPU 的使用率;
• %MEM:内存的使用率;
• TIME+:CPU 使用时间的累加;
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
3.free
free命令用来显示内存的使用情况,使用权限是所有用户。
参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。
[root@localhost temp]# free -m total used free shared buffers cached Mem: 1999 768 1231 0 103 275 -/+ buffers/cache: 389 1610 Swap: 3071 0 3071
第一行:
total 物理内存总数
used 已经使用的内存数
free 空闲的内存数
shared 当前已经废弃不用,总是0
buffers 即Buffer Cache内存数
cached 即Page Cache内存数
关系:total = used + free
第二行:
-/+ buffers/cache的意思相当于:
-buffers/cache 的内存数:(等于第1行的 used – buffers – cached),实际上是应用程序所使用的内存。
+buffers/cache 的内存数:(等于第1行的 free + buffers + cached),是对应用程序来说还剩余的内存。
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第三行是交换分区swap, 列出已使用、空闲的swap.
4.at (参考http://www.cnblogs.com/peida/archive/2013/01/05/2846152.html)
at命令用来在指定时刻执行指定的命令序列。
at [-V] [-q x] [-f file] [-m] time
at允许使用一套相当复杂的指定时间的方法。他能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。 上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。 TIME:时间格式,这里可以定义出什么时候要进行 at 这项任务的时间,格式有: HH:MM ex> 04:00 在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此任务。 HH:MM YYYY-MM-DD ex> 04:00 2009-03-17 强制规定在某年某月的某一天的特殊时刻进行该项任务 HH:MM[am|pm] [Month] [Date] ex> 04pm March 17 也是一样,强制在某年某月某日的某时刻进行该项任务 HH:MM[am|pm] + number [minutes|hours|days|weeks] ex> now + 5 minutes ex> 04pm + 3 days 就是说,在某个时间点再加几个时间后才进行该项任务。
在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(
ps -ef | grep atd查看, 开启用/etc/init.d/atd start or restart; 开机即启动则需要运行chkconfig --level 2345 atd on)。
命令参数:
-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I atq的别名
-d atrm的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q<列队> 使用指定的列队
-f<文件> 从指定文件读入任务而不是从标准输入读入
-t<时间参数> 以时间参数的形式提交要运行的任务
计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务
删除已经设置的任务命令:atrm 7
显示已经设置的任务内容命令:at -c 8
atd 的启动
要使用一次性计划任务时,我们的 Linux 系统上面必须要有负责这个计划任务的服务,那就是 atd 服务。 不过并非所有的 Linux distributions 都默认会把他打开的,所以,某些时刻我们需要手动将atd 服务激活才行。 激活的方法很简单,就是这样:
命令:
/etc/init.d/atd start
/etc/init.d/atd restart
配置一下启动时就启动这个服务,免得每次重新启动都得再来一次
命令:
chkconfig atd on
5.lp
lp是打印文件的命令,使用权限是所有用户。
格式
lp [-c][-d][-m][-number][-title][-p]
参数
-c:先拷贝文件再打印。
-d:打印队列文件。
-m:打印结束后发送电子邮件到用户。
-number:打印份数。
-title:打印标题。
-p:设定打印的优先级别,最高为100。
6.useradd
useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。
useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。
格式
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
7.groupadd
groupadd命令用于将新组加入系统。
格式
groupadd [-g gid] [-o]] [-r] [-f] groupname
参数
-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:加入组ID号,低于499系统账号。
-f:加入已经有的组时,发展程序退出。
(/etc/passwd)
8.kill
kill命令用来中止一个进程。
格式
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
参数
-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
kill -9 12345//强制终止进程12345
9.crontab
使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。
格式
crontab [ -u user ] 文件
crontab [ -u user ] { -l | -r | -e }
参数
-e:执行文字编辑器来设定定时任务,内定的文字编辑器是vi。
-r:删除目前的定时任务。
-l:列出目前的定时任务。
crontab 文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。
例如:*/1 * * * * wall "Hello!",每分钟发送一个Hello!
上面时间分别是:分钟、小时、天、月、星期