1、查看进程
第一种,用w查看进程:
[[email protected] ~]# w 05:22:23 up 14 min, 2 users, load average: 0.00, 0.02, 0.06 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT chenyr tty1 :0 05:08 14:38 2.35s 0.23s pam: gdm-passwo chanshuy pts/0 192.168.230.1 05:09 0.00s 0.15s 0.21s sshd: chanshuyi
其中:
JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里
PCPU:CPU执行程序耗费的时间
WHAT:用户正在执行的操作
load averate:分别显示系统在过去1、5、15分钟内的平均负载程度
from:显示用户从何处登录系统,“:0”的显示代表该用户是从X Window下,打开文本模式窗口登录的
IDLE:用户限制的时间。
如果要查看某个用户的信息,可以用“w [用户名]”命令查看。
第二种,用ps命令查看:
格式:ps [参数]
参数:-a 显示所有用户的进程
-u 显示用户名和启动时间
-x 显示没有控制终端的进程
-e 显示所有进程,包括没有控制终端的进程
-l 长格式显示
-w 宽行显示,可以使用多个w进行加宽显示
# ps //查看隶属于自己的进程 #ps -le //查看所有进程的详细信息 #ps --sort pid //列出隶属于自己的进程并按pid排序 [[email protected] ~]# ps -aux | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 19360 1536 ? Ss 05:07 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 05:07 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 05:07 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 05:07 0:00 [ksoftirqd/0]
其中PID:进程号,PPID:父进程的进程号,TTY:进程启动的终端
STAT:进程当前状态,S 睡眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止
NI:进程优先级
TIME:进程自启动以来启动CPU的总时间
COMMAND/CMD:进程的命令名
USER:用户名
%CPU:占用CPU时间和总时间的百分比
%MEM:占用内存与系统内存总量的百分比
注:用pstree命令可以以树状查看所有进程的信息
第三种,用pgrep命令:
用pgrep命令可以查看某服务所启动的所有进程的PID,如:
pgrep httpd //查看httpd启动的所有进程的PID
第四种:实时查看进程信息
格式:top
参数(交互参数):
d 指定刷新的时间间隔
c 显示整个命令行而不仅仅显示命令名
u 查看指定用户的进程
k 中止执行中的进程
h or ? :获得帮助
r 重新设置进程优先级
s 改变刷新的时间间隔
W 将当前设置写入~/.toprc文件中
2、关闭进程
第一种,关闭某个进程:
格式:kill [参数] [进程PID]
参数:-9 强制关闭 -1 重启进程 (更多的参数可以用kill -l 查看参数)
范例:
kill 333 //关闭PID为333的进程 kill -1 333 //重启333进程
第二种,关闭某个服务的所有进程:
格式:killall/pkill [进程名]
范例:
killall httpd //关闭httpd服务 pkill httpd //关闭httpd服务
3、指定进程优先级
第一种,指定程序优先级 nice :
格式:nice [-n] [进程名] 其中-n中的n表示优先级
范例: MARK检查命令是否正确
nice -5 httpd //指定httpd进程的优先级为5nice --5 httpd //指定httpd进程的优先级为-5
第二种,改变一个正在运行的进程的优先级 renice:
格式:renice n pid
范例:
renice -5 777 //指定PID为77的进程的优先级为-5
4、nohup命令的使用
nohup命令可以让用户退出登陆后仍旧继续执行,nohup命令会将执行后的数据信息和错误信息默认存储到文件nohup.out中。
命令格式:nohup [执行的命令] &
范例:
nohup find / -name init* > /root/find.init2014 &
5、进程的挂起和恢复
进程挂起:Ctrl + Z
进程终止:Ctrl + C
查看被挂起的进程:jobs
将进程恢复到前台继续运行:fg [编号] (通过jobs查看得到的编号)
将进程恢复到后台继续运行:bg [编号] (通过jobs查看得到的编号)
补充实例:MARK
6、计划任务
计划任务一般有三种:at、batch、cron。at安排作业在某一时刻执行一次,batch安排作业在系统附在不重时执行一次,cron安排周期性运行的作业。
第一种:at 只执行一次的作业
格式:at [-f 文件名] [时间] 建立一个任务
at -d [序号] 或 atrm [序号] 删除一个任务
at -l 或 atq 查看队列中的任务
其中时间的格式有绝对计时法和相对计时法两种:
范例1:用交互的方式建立任务
[[email protected] ~]# at 22:02 at> wall hello at> <EOT> job 5 at 2014-12-03 22:02 [[email protected] ~]# atq 5 2014-12-03 22:02 a root
这种方式增加的任务的脚本会存放在:/var/spool/at 目录下。
范例2:用文件的方式建立任务
先建立一个文件/etc/at.script,增加如下内容:
wall "hello, I‘m wall"
之后建立任务:
[[email protected] ~]# at -f /etc/at.script now+1 minutes job 8 at 2014-12-03 22:12
第二种:batch命令
batch命令会在系统附在较轻(负载在0.8以下)时执行此任务。
batch命令用得比较少,就不做更多的介绍了。
第三种:crontab命令
命令:crontab [参数]
参数:-l 显示当前的crontab
-r 删除当前的crontab(会删除整个crontab文件)
-e 使用编辑器编辑当前的crontab文件
其中crontab文件的格式为:minute hour day-of-month month-of-year day-of-week commands
crontab文件中每一行为一个crontab任务。
建立一个crontab任务只需要用“crontab -e” 命令编辑crontab文件,插入要定时执行的语句即可:
23 22 3 12 * wall hello //在12月3日的22:23分执行这条命令
crontab文件存放在/var/spool/cron下,以用户的名字命令。如root用户的crontab文件为:/var/spool/cron/root。
时间的书写上,如果不限制则写“*”。
如果要表示连续,如1-3月,则在对应的位上用横杠“-”连接,如:“1-3”。
要表示并列,如2、3月,则在对应的位上用“,”连接,如:“2,3”。
如果要每分钟,每小时,每月,每年执行一次,则用“/"连接。
范例:
*/1 * * * * wall hello //表示每分钟执行一次 */2 * * * * wall hello //表示每2分钟执行一次(其他小时、月、年类似) * * 1-3 * * wall hello //表示每年的1-3号各执行一次 * * 1,3 * * wall hello //表示每年的1号,3号各执行一次