任务管理RHCE-Day5

来源:互联网 发布:冷钢刀怎么样啊 知乎 编辑:程序博客网 时间:2024/06/11 20:52
进程管理及控制


进程管理


1、进程查看
# ps 
  PID TTY          TIME     CMD
 1493 pts/0        00:00:00  bash
 1604 pts/0        00:00:00  ps


打印进程
# ps aux | less  
vsz:进程所占用内存的总大小 以kb为单位 
rss:进程所占用实际物理内存的大小 以kb为单位


进程状态:STAT
D:不可中断的睡眠,不能被其他进程唤醒
S:可中断的睡眠,其他进程、硬件中断、系统资源唤醒
R:运行或就绪;在CPU队列中等待、正在运行 
T:停止
Z:僵死;子进程结束,等待父进程回收资源  Zombie


<:高优先级的进程
1、进程会被cpu优先执行
2、进程会被分配较多CPU执行时间
N:低优先级的进程 
+:前台进程组中的进程
l:多线程进程   httpd
s:会话进程 session


COMMAND:
[kworker/0:3] : 内核启动的进程
ps aux :用户启动的进程


查看系统中是否启动了vim进程
# ps aux | grep vim  


rhel 7启动的第1个进程:systemd   PID  1 


打印线程
# ps -elf 
PRI:优先级
NI:nice值 
 
显示进程树
# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─agetty
        ├─alsactl
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}


显示root运行的进程 
# pgrep -l -u root 
1 systemd
2 kthreadd
3 ksoftirqd/0
5 kworker/0:0H
6 kworker/u128:0
7 migration/0
8 rcu_bh
9 rcuob/0
10 rcuob/1
11 rcuob/2
12 rcuob/3


# pidof vim
2686




动态查看进程
# top  
top - 23:02:38 up 52 min,  2 users,  load average: 0.01, 0.03, 0.05
Tasks: 229 total,   2 running, 227 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si
KiB Mem:   2043052 total,   325044 used,  1718008 free,      748 buffe
KiB Swap:  2047996 total,        0 used,  2047996 free.   125420 cache


  PID USER     PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ 
 2046 root      20   0  123660   1688   1152 R  0.7  0.1   0:02.89 
 1849 root      20   0       0      0      0 S  0.3  0.0   0:01.92 
    1 root      20   0   53632   7588   2524 S  0.0  0.4   0:02.26


0.0 us:  user 用户进程所占用的cpu
0.3 sy:  system 系统进程所占用的cpu
0.0 ni:  nice   调整过nice值的进程所占用的cpu
99.7 id: idle   cpu的空闲
0.0 wa:   wait 等待运行的进程所占用cpu
0.0 hi:  hard interupt 硬件中断的进程
0.0 si:  soft interupt 软件中断的进程


load average: 0.01, 0.03, 0.05   
cpu在1分钟、5分钟、15分钟的平均负载值
平均负载值/cpu内核数量    
大于1:cpu资源饱和
小于1:cpu使用正常


PR  priority  优先级
数字越小,优先级越高;优先级越高,执行越优先


NI:进程的nice值   调整或者指定进程的优先级
priority=old_priority+nice  

nice值的取值范围:-20--19


root用户可以随意进程的nice值
普通用户仅可以调高nice值




查看cpu内核数:
# grep "cpu cores" /proc/cpuinfo 
cpu cores : 1




1)启动进程,手工指定优先级
# nice -n 3 vim /etc/fstab   


2)调整正在运行的进程的nice值
# top
r:调整进程的nice值
top -p 进程号:查看指定进程


3)
# renice -n <nice值> PID
# renice -n -10 1777 
1777 (process ID) old priority 10, new priority -10




查看内存使用情况:
# free -m
             total       used       free     shared    buffers     cached
Mem:           483        308        174          4          0        127
-/+ buffers/cache:        180        302
Swap:         1999          0       1999


查看CPU使用情况:
# uptime 
 01:50:15 up  2:19,  2 users,  load average: 0.01, 0.02, 0.05
 
动态收集cpu占用信息:
# mpstat 2 3
Linux 3.10.0-123.el7.x86_64 (server.bj.com) 11/05/2015_x86_64_ (1 CPU)


01:51:16 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01:51:18 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01:51:20 AM  all    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
01:51:22 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:     all    0.00    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00   99.83


动态收集内存使用信息:
# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 174940   1000 130352    0    0    18     1   26   51  0  0 99  0  0
 1  0      0 174916   1000 130352    0    0     0     1   16   34  0  0 100  0  0
 1  0      0 174916   1000 130352    0    0     0     0   19   29  0  0 100  0  0


# iostat 1 1
Linux 3.10.0-123.el7.x86_64 (server.bj.com) 11/05/2015_x86_64_   (1 CPU)


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.11    0.00    0.25    0.33    0.00   99.31


Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
fd0               0.00         0.00         0.00          8          0
sda               0.89        16.55         1.10     148886       9861
sdb               0.06         0.24         0.00       2149          4
sdc               0.03         0.12         0.00       1044          0
scd0              0.00         0.01         0.00         48          0
dm-0              0.02         0.06         0.00        565          4






控制进程的运行方式 


重要的信号 :
1:signup  不重启进程重新读取其配置文件,使新配置生效
# service named reload
2:signint  ctrl+c中止   interupt
9:signkill  强制终止程序
15:signterm  终止程序,默认信号 


终止进程:
# kill [-9] PID 

同时终止多个同名的进程:
# killall httpd 
# pkill httpd 

进程启动的方式:


1、在后台启动程序 
# cp /mnt/Packages/* /software & 


2、查看后台的程序
# jobs  -l
[1]+  3756 Stopped (tty input)     cp -i /mnt/Packages/* /software/
[2]-  3769 Running                 cp -i /mnt/Packages/* /software/ &


3、将正在运行的程序放入后台暂停运行
ctrl + z 


4、将后台任务调回前台继续运行
# fg 任务编号(1或2) 


5、将后台暂停运行的任务继续在后台运行
# bg 任务编号 








计划任务
一次性计划任务
周期性计划任务

一次性计划任务


前提条件:atd服务必须运行
# systemctl is-active atd
active


制订一次性计划任务
# at 时间
>command 
>command
按ctrl+d提交任务


查看一次性计划任务
# atq 


删除一次性计划任务
# atrm 任务编号




时间写法:
绝对时间:
# at 18:34 hh:mm
如果该时间已经过期,任务会在明天的相同时间执行


# at 18:34 2016-7-8   hh:mm yyyy-mm-dd


# at 23:30 today 
# at 23:30 tomorrow


# at midnight   (午夜)
# at teatime (下午4:00)
# at noon (中午)


12小时制时间:
# at 7:08AM
# at 8:00PM
# at 3:05PM 2015-7-8
# at 2:03PM March 17 2015    




相对时间:
now  +  数字 时间单位


时间单位:
minutes,  hours , days, weeks


示例:5分钟后,在/tmp下创建目录caiwu
# at now +5minutes
at> mkdir /tmp/caiwu
at> <EOT>
job 2 at Thu Nov  5 03:16:00 2015




周期性计划任务
前提:crond服务必须运行
# systemctl is-active crond
active


制定周期性计划任务
# crontab -e 


时间写法: (-,/) 
分 时 日 月 周 
30 23 * * * 每天的23:30 
0  8 * * 4 每周四的早上八点
0 8-10 * * * 每天的8--10点
0 13,15,17 * * * 每天的下午1、3、5点
*/5 * * * * 每5分钟


操作:
1、命令全路径    
2、只能写一条命令(shell脚本)


编写脚本:
1)新建文件  .sh 
2)编写
3)为文件添加执行权限 




示例: 每天晚上10:00,分别显示cpu负载、内存使用情况及硬盘容量使用情况 


1、编写脚本,分别显示cpu负载、内存使用情况及硬盘容量使用情况 
# vim info.sh 
#!/bin/bash


echo '============cpu info============'
uptime
echo '============memory info========='
free -m
echo '============disk info=========='
df -hT


2、编写计划任务,执行该脚本 
# crontab -e 
0 10 * * *   /usr/bin/bash ~/info.sh 




注意:
%在计划任务中表示结束符的意思,因此需要使用转义   \%




查看用户的计划任务
# crontab -l [ -u username ]
*/1 * * * * /usr/bin/mkdir /`date +\%Y-\%m-\%d`


删除计划任务
# crontab -r 






命令引用 :
1、反引号``
# tar czf /tmp/`date +%F-%T`.tar.gz /home/


2、$()
# tar czf /tmp/$(date +%F-%T).tar.gz /home/


为安全性考虑,建立编辑/etc/crontab制订计划任务!!!!!(只能root使用,并指定user)

































0 0
原创粉丝点击