阅读 53

linux基础之进程管理与服务

进程的状态

进程被称作任务,有4种状态

运行态 运行或准备运行
等待态 
    可中断(TASK_ITERRUPTIBLE)
    不可中断(TASK_UNITERRUPTIBLE)
停止态(TASK_STOPPED)
僵死态(TASK_ZOMBIE)
复制代码

常用进程管理命令

# ps 查看静态的进程统计信息
ps [选项]
    常用选项:
    a:显示当前终端下的所有进程信息
    u:使用以用户为主的格式输出进程信息
    x:显示当前用户在所有终端下的进程信息 
root@computer: ~$ ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000    10     9  3  80   0 -  4199 -      tty1     00:00:00 bash
0 R  1000    22    10  0  80   0 -  4271 -      tty1     00:00:00 ps
# 各个字段的意义
S: 进程状态
    R: 进行
    S: 休眠
    T: 暂停或终止
    Z: 僵死
UID:进程启动者的用户ID
C:进程最近使用CPU的估算
PRI:进程的优先级
TIME:进程启动以后占用CPU的总时间
CMD:启动该进程的命令名称
TTY:进程所在终端的终端号
复制代码
# 手动启动进程
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号
复制代码
# Ctrl+Z 将当前进程挂起,即调入后台并停止执行
# jobs 查看处于后台的任务列表
# bg 将前台作业切换到后台运行,若没有指定作业号,则将当前作业切换到后台
# fg 将处于后台的进程恢复到前台运行,需指定任务序号
# Ctrl+C 中断正在执行的命令
复制代码
# kill killall 终止进程
kill 用于终止指定PID号的进程
killall 并不是终止所有进程,用于终止指定名称的所有进程
    -9 用于强制终止
复制代码
# pkill 根据特定条件终止相应的进程
    常用选项:
    -U:根据进程所属的用户名终止相应进程
    -t:根据进程所在的终端终止相应进程
复制代码
top命令
用途:查看动态的进程排名信息
按P键根据CPU占用情况对进程列表进行排序 
按M键据根内存占用情况进行排序
按N键根据启动时间进行排序
按h键可以获得top程序的在线帮助信息
按q键可以正常退出top程序
按k结束进程(9:强制结束进程)
按r修改优先级(NI)
使用空格键可以强制更新进程状态显示

通过更改进程的nice值,可以调整进程的优先级使它所占有的cpu份额大于或小于其他进程
Nice值的范围从-20到20,默认为0
通过提高nice的值,减少cpu的使用时间降低优先级
只有root用户可以降低nice的值,提高优先级
renice和top都可以用于更改正在运行的进程的nice值
nice可以用于设置进程的nice值
复制代码

计划任务管理

# at 在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
使用at命令,首先需要启动/etc/init.d/atd
root@computer: ~$ service atd start
然后才可以使用at命令 at [HH:MM] [yyyy-mm-dd]
root@computer: ~$ at 20:20
at>echo "hello" # crtl+D 提交任务
at><EOF>
复制代码
# crontab 按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
若想使用crontab,需要启动/etc/init.d/crond
并设置相应配置文件
 全局配置文件,位于文件:/etc/crontab 
 用户定义的设置,位于文件:/var/spool/cron/用户名
crontab设置格式: 分钟 小时 日期 月份 星期 任务

分钟 取值为从0到59之间的任意整数
小时 取值为从0到23之间的任意整数
日期 取值为从1到31之间的任意整数
月份 取值为从1到12之间的任意整数
星期 取值为从0到7之间的任意整数,0或7代表星期日
命令 要执行的命令或程序脚本

时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率

例如:
0  17  *  *  1-5        周一到周五每天17:00 
30  8  *  *  1,3,5	每周一、三、五的8点30分
0  8-18/2  *  *  *	8点到18点之间每隔2小时
0  0  */3  *  *		每隔3天

# 编辑计划任务
crontab -e [-u 用户名]

假设root用户,需要完成以下任务
每天早上7:50自动开启sshd服务,22点50时关闭
每隔5天清空一次FTP服务器公共目录/var/ftp/pub(如果目录不存在,可以安装vsftpd,或者自己创建目录)
每周六的7:30时,重新启动httpd服务
每周一、三、五的17:30时,打包备份/etc/httpd目录

root@computer: ~# crontab -e
50 7 * * * /usr/bin/systemctl start sshd
50 22 * * * /usr/bin/systemctl stop sshd
0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl restart httpd
30 17 * * 1,3,5 /usr/bin/tar czvf httpdconf.tar.bz2 /etc/httpd 
注意:执行命令需要绝对路径,可以通过whereis来查找绝对路径

# 查看计划任务
crontab l [-u 用户名]
root@computer: ~# crontab -l # 查看自己的计划任务
root@computer: ~# crontab -l -u jerry  # 查看jerry的计划任务

# 删除计划任务
crontab -r [-u 用户名]
root@computer: ~# crontab -r -u jerry  # 删除jerry的计划任务
复制代码

服务管理

服务的分类

系统服务:某些服务的服务对象是Red Hat Enterprise Linux系统本身,或者Red Hat Enterprise Linux系统的用户,这类服务称为系统服务。比如负责用来监控软件磁盘阵列状态的mdmonitor服务,就是一个系统服务。

网络服务:另外有许多服务,提供给网络中的其他客户端调用,这类服务统称为网络服务。例如网站服务(Web Service)、网络文件系统服务(Networking File System Service)等,都属于网络服务。

常用命令

运行一个服务
systemctl start foo.service
关闭一个服务
systemctl stop foo.service
重启一个服务
systemctl restart foo.service
显示一个服务的状态
systemctl status foo.service
开机启动一个服务
systemctl enable foo.service
开机禁用一个服务
systemctl disable foo.service
查看安装哪些服务
systemctl list-unit-file
复制代码
关注下面的标签,发现更多相似文章
评论