阅读 66

linux进程与服务

进程的状态

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

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

常用进程管理命令

查看静态的进程统计信息

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 在线帮助信息
Q 退出top程序
K 结束进程(9:强制结束进程)
R 修改优先级(NI)
space 强制更新进程状态显示
通过更改进程的nice值,可以调整进程的优先级使它所占有的cpu份额大于或小于其他进程
Nice值的范围从-20到20,默认为0
通过提高nice的值,减少cpu的使用时间降低优先级
只有root用户可以降低nice的值,提高优先级
renice和top都可以用于更改正在运行的进程的nice值
nice可以用于设置进程的nice值
复制代码

计划任务管理

at

# 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 按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
若想使用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
复制代码
关注下面的标签,发现更多相似文章
评论