十、Linux进程管理
10.1 查看系统中所有进程(ps-aux)
ps -aux
参数:
- -a 显示所有进程(包括其他用户的进程)
- -u 用户以及其他详细信息
- -x 显示没有控制终端的进程
相关信息:
USER:该进程属于哪个使用者账号。
UID:程序被该 UID 所拥有。
PID:就是这个程序的 ID 。
%CPU:该进程使用掉的CPU资源百分比。
%MEM:该进程所占用的物理内存百分比。
STAT:
- R:正在运行
- S:正在睡眠
- T:停止了
- Z:已经终止了。
TIME:该进程实际使用CPU运行的时间
COMMAND:该进程的实际指令
示例:找出mysql这个服务有关的进程信息。
ps -aux|egrep mysql
温馨提示:
egrep是grep的扩展和grep -e 是一样的...
grep中的匹配字符,全部当作字符串来处理,但是不支持正则表达式的特殊元字符....
egrep可以支持元字符...
'^':指匹配的字符串在行首, '$':指匹配的字符串在行尾,
10.2 查看系统健康状态(top)
查看系统健康状态 ,windows 加强版 任务管理器
top [-d] | top [-bnp]
top是一个不错的进程观察工具,但不同于ps是静态的结果输出。top这个进程可以持续地监测整个系统的进程的工作状态。
显示详解:
- 当前时间
- 系统已运行的时间
- 当前登录用户的数量
- 相应最近5、10和15分钟内的平均负载。
可以使用'l'命令切换uptime的显示。
- 21:45:11 — 当前系统时间
- 0 days, 4:54 — 系统已经运行了4小时54分钟(在这期间没有重启过)
- 2 users — 当前有2个用户登录系统
- load average: 0.24, 0.15, 0.19 — load average 后面的三个数分别是5分钟、10分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
按q退出任务管理器。
10.3 进程查看器(htop)
htop
是Linux系统中的一个互动的进程查看器,与Linux传统的top比较的话,htop
更人性化
并且还支持鼠标
操作!
htop的安装
#安装epel源 yum install epel-release -y #安装htop yum install -y htop #安装完毕后命令行输入 htop
10.4 终止进程(kill)
终止进程,kill的应用是和ps或者pgrep命名结合在一起使用的。
kill [信号量] 进程ID
示例
终止所有的httpd进程。
[root@zk3 home]# ps auxf|grep httpd root 15968 0.0 0.0 112808 968 pts/0 S+ 11:35 0:00 | \_ grep --color=auto httpd
看上面输出中的第二列,就是进程PID.
kill 15968 ps -auxf|grep httpd
注意:
killall 正在运行的进程名 killall gami
kill -9 PID 强制终止进程
10.5 网络接口设备状态信息(netstat)
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
netstat [选项]
列出所有端口
netstat -a # 列出所有端口
netstat -at # 列出所有TCP端口
netstat -au # 列出所有UDP端口
netstat -ax # 列出所有unix端口
netstat -atnlp # 直接使用ip地址列出所有处理监听状态的TCP端口,且加上程序名
显示每个协议的统计信息
netstat -s # 显示所有端口的统计信息
netstat -st # 显示所有TCP的统计信息
netstat -su # 显示所有UDP的统计信息
显示核心路由信息
netstat -r # 显示所有端口的统计信息
netstat -rn # 显示所有TCP的统计信息
查看端口号
lsof -i:端口号
十一、Linux系统服务
11.1 Service命令
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程。
service 服务名 [start | stop | restart | reload | status]
注意:
service命令其实是去/etc/init.d目录下,去执行相关程序
示例:查看当前网络的状况。
service network status
11.2 Systemd命令
Linux的启动一直采用init进程。
service命令两个缺点:
一是启动时间长。
init
进程是串行启动只有前一个进程启动完,才会启动下一个进程。二是启动脚本复杂。
init
进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。
systemctl命令
systemctl
是 Systemd 的主命令,用于管理系统。
假设要启动一个foo程序
System V init命令 | systemctl命令 | 作用 |
service foo start | systemctl start foo.service | 启动服务 |
service foo restart | systemctl restart foo.service | 重启服务 |
service foo stop | systemctl stop foo.service | 停止服务 |
service foo reload | systemctl reload foo.service | 重新加载配置文件(不终止服务) |
service foo status | systemctl status foo.service | 查看服务状态 |
systemd-analyze命令
systemd-analyze
命令用于查看启动耗时。
# 查看启动耗时 $ systemd-analyze # 查看每个服务的启动耗时 $ systemd-analyze blame # 显示瀑布状的启动过程流 $ systemd-analyze critical-chain # 显示指定服务的启动流 $ systemd-analyze critical-chain atd.service
hostnamectl命令
hostnamectl
命令用于查看当前主机的信息。
# 显示当前主机的信息 $ hostnamectl # 设置主机名。 $ sudo hostnamectl set-hostname rhel7
timedatectl命令
timedatectl
命令用于查看当前时区设置。
# 查看当前时区设置 $ timedatectl # 显示所有可用的时区 $ timedatectl list-timezones # 设置当前时区 $ sudo timedatectl set-timezone America/New_York $ sudo timedatectl set-time YYYY-MM-DD $ sudo timedatectl set-time HH:MM:SS
11.3 Chkconfig
chkconfig命令用来更新、查询、改动不同执行级上的系统服务。比方安装了httpd服务,而且把启动的脚本放在了/etc/init.d文件夹下,有时候须要开机自己主动启动它,而有时候则不须要,因此,就能够使chkconfig命令来进行控制。
参数 | 参数说明 |
--add | 将相应的服务加入chkconfig管理 |
--del | 将相应的服务从chkconfig管理中删除 |
--level | 查看相应服务的运行级别 |
示例:查看开机启动的程序
# chkconfig --list
示例:
# chkconfig telnet on //开启Telnet 服务 # chkconfig --list //列出chkconfig 所知道的所有的服务的情况 # chkconfig telnet off // 关闭 Telnet 服务 # chkconfig --list // 列出chkconfig所知道的所有的服务的情况
systemctl 设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令
System V init 命令 | systemctl 命令 | 作用 |
chkconfig foo on | systemctl enable foo.service | 开机自动启动 |
chkconfig foo off | systemctl disable foo.service | 开机不自动启动 |
chkconfig foo | systemctl is-enabled foo.service | 查看特定服务是否为 开机自动启动 |
chkconfig --list | systemctl list-unit-files --type=service | 查看各个级别下服务 的启动与禁用情况 |
附录:
经常使用服务介绍
amd: # 自己主动安装网络文件系统守侯进程
apmd: # 高级电源管理
Arpwatch: # 记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
Autofs: # 自己主动安装管理进程automount。与NFS相关,依赖于NIS
Bootparamd: # 引导參数server。为LAN上的无盘工作站提供引导所需的相关信息
crond: # 计划任务
Dhcpd: # 启动一个动态IP地址分配server
Gated: # 网关路由守候进程,使用动态的OSPF路由选择协议
Httpd: # WEBserver
Inetd: # 支持多种网络服务的核心守候程序
Innd: # Usenet新闻server
Linuxconf: # 同意使用本地WEBserver作为用户接口来配置机器
Lpd: # 打印server
Mars-nwe: # mars-nwe文件和用于Novell的打印server
Mcserv: # Midnight命令文件server
named: # DNSserver
netfs: # 安装NFS、Samba和NetWare网络文件系统
network: # 激活已配置网络接口的脚本程序
nfs: # 打开NFS服务
nscd: # nscdserver,用于NIS一个支持服务,它快速缓存用户口令和组成成员关系
portmap: # RPC portmap管理器,与inetd相似,它管理基于RPC服务的连接
postgresql: # 一种SQL数据库server。
routed: # 路由守候进程,使用动态RIP路由选择协议
rstatd: # 一个为LAN上的其他机器收集和提供系统信息的守候程序
ruserd: # 这是一个基于RPC的服务。它提供关于当前记录到LAN上一个机器日志中的用户信息
rwalld: # 这是一项基于RPC的服务。同意用户给每一个注冊到LAN机器的其他终端写消息
rwhod: # 激活rwhod服务进程。它支持LAN的rwho和ruptime服务
sendmail: # 邮件serversendmail
smb: # Samba文件共享/打印服务
snmpd: # 本地简单网络管理候进程
squid: # 激活代理serversquid
syslog: # 一个让系统引导时起动syslog和klogd系统日志守候进程的脚本
xfs: # X Window字型server,为本地和远程Xserver提供字型集
xntpd: # 网络时间server
ypbind: # 为NIS(网络信息系统)客户机激活ypbind服务进程
yppasswdd: # NIS口令server
ypserv: # NIS主server
gpm: # 管鼠标的服务
identd: # AUTH服务。在提供用户信息方面与finger相似
十二、Linux定时任务
什么是定时任务
定时任务命令是cond,crond就是计划任务,类似于我们平时生活中的闹钟,定点执行。
为什么要用crond
计划任务主要是做一些周期性的任务,比如凌晨3点定时备份数据、晚上23点开启网站抢购接口、凌晨0点关闭抢占接口等。
计划任务主要分为以下两种使用情况:
- 系统级别的定时任务
临时文件清理、系统信息采集、日志文件切割
- 用户级别的定时任务
定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据。
crontab配置文件
进入crontab配置文件
vim /etc/crontab
00 02 * * * ls #每天的凌晨2点整执行
00 02 1 * * ls #每月的1日的凌晨2点整执行
00 02 14 2 * ls #每年的2月14日凌晨2点执行
00 02 * * 7 ls #每周天的凌晨2点整执行
00 02 * 6 5 ls #每年的6月周五凌晨2点执行
00 02 14 * 7 ls #每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls #每年2月14日或每年2月的周天的凌晨2点执行
*/10 02 * * * ls #每天凌晨2点,每隔10分钟执行一次
* * * * * ls #每分钟都执行
00 00 14 2 * ls #每年2月14日的凌晨执行命令
*/5 * * * * ls #每隔5分钟执行一次
00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点执行
00 02 1-8 * * ls #每月1号到8号凌晨2点执行
0 21 * * * ls #每天晚上21:00执行
45 4 1,10,22 * * ls #每月的1,10,22号的4:45执行
45 4 1-10 * * ls #每月的1到10号的4:45执行
3,15 8-11 */2 * * ls #每隔两天上午8点到11点的第3和第15分钟执行
0 23-7/1 * * * ls #晚上11点到早上7点之间,每隔一个小时执行
15 21 * * 1-5 ls #周一到周五每天晚上21:15执行
crontab命令选项
crontab -e #编辑定时任务
crontab -l #查看定时任务
crontab -r #删除定时任务
crontab -u #指定其他用户
示例
假设在每周一、三、五的凌晨 3 点 25 分,都需要使用 tar 命令把wwwroot文件夹进 行打包处理,使其作为一个备份文件。
25 3 * * 1,3,5 /usr/bin/tar -zcvf backup.tar.gz /opt/wwwroot