Linux服务管理
查询已安装的服务
- RPM包服务
chkconfig --list
- 查看服务自启动状态, 可以看到所有rpm包安装的服务
- 源码包安装的服务
- 查看服务安装位置, 一般是
/usr/local/
下, 没有命令查看
- 查看服务安装位置, 一般是
RPM安装服务与源码包安装服务的区别
- 安装位置不同
- 源码包一般安装在指定位置
/usr/local/
- RPM包安装在默认位置中(命令文件/配置文件日志文件/帮助文件等等各不同)
- 源码包一般安装在指定位置
RPM包:独立服务与依赖xinetd的服务(越来越少)
- rpm包存储位置:
/etc/init.d/
: 启动脚本位置/etc/rc.d/init.d/
也是一个链接/etc/sysconfig/
: 初始化环境配置文件位置/etc/
: 配置文件位置/etc/xinetd.config
: xinetd配置文件/etc/xinetd.d/
: 基于xinetd服务的启动脚本/var/lib/
: 服务产生的数据放在这里/var/log/
: 日志
- 独立服务的启动
/etc/init.d/独立服务名 [start|stop|status|restart]
/service 独立服务名 [start|stop|status|restart]
(service命令是redhat独有的命令, 可安装)service --status-all
: 列出所有独立服务及其状态- 新版本CentOS7的服务管理命令(systemctl)有所变化(此处… …)
- 独立服务的自启动
chkconfig [--level 2345] 服务名 on
: 开启服务的自启动功能- 开启服务自启动(默认是在2345系统级别)
chkconfig [--level 2345] 服务名 off
: 关闭服务的自启动- 关闭服务自启动(默认是在2345系统级别)
/etc/rc.d/rc.local
配置文件, 开机自动运行- 加入服务启动指令, 开机时可以执行
- 推荐使用这种方法管理自启动
- 使用
ntsysv
命令管理自启动(redhat独有)
基于xinetd服务管理
- 需要安装xinetd超级守护进程, 本身是独立服务, 用于管理其下面的一系列服务
- 有xinetd服务后,
chkconfig --list
才可以查看基于xinetd的服务(如telnet) - 基于xinetd服务的启动: 修改
/etc/xinetd.d/服务名
配置文件, 然后重启xinetd - 自启动:
chkconfig 服务名 on|off
(此类服务的自启动和启动相互关联不严格区分)- 开启自启动服务会启动, 关闭自启动服务也会直接关闭
源码包服务管理
- 启动: 使用绝对路径
/usr/local/安装目录/bin/服务名 start
- 使用帮助手册可以查看启动方法
- 自启动: 修改
/etc/rc.d/rc.local
文件写入命令(每次开机执行脚本文件)
进程管理
进程管理的作用:
- 判断服务器健康状态(最主要)
- 查看系统中所有进程
- 杀死进程
查看进程信息
ps aux
(BSD操作系统格式, 不需要-
)a
: 所有后台进程u
: 所有前台进程x
: 用户信息
ps -le
(Linux标准命令格式)-l
: 显示详细信息-e
: 显示所有进程
- 进程信息含义:
USER
: 进程由该用户开启PID
: 进程ID%CPU
: 进程占CPU百分比%MEM
: 进程占物理内容百分比VSZ
: 进程占虚拟内存大小(KB)RSS
: 进程占实际物理内存(KB)TTY
: 进程由哪个终端运行的- tty1-tty7代表本地终端
- tty1-6是字符界面终端, tty7是图像界面终端
- pts/0-255代表虚拟终端
STAT
: 进程状态- R:运行
- S: 睡眠
- T: 停止状态
- s: 包含子进程
- +: 位于后台
- … …
START
: 进程启动时间TIME
: 进程占用CPU运算时间COMMAND
: 启动进程的命令
查看系统状态
top [选项]
: 会进入人机交互模式(显示进程面板, 类似任务管理器的显示作用)-d 秒数
: 指定top命令每隔几秒更新, 默认3s- 在top命令的交互模式中可以执行的命令:
?
或h
: 显示交互模式帮助P
: 以CPU使用率排序(此项默认)M
: 以内存使用率排序N
: 以PID排序q
: 退出top
查看进程树
pstree [选项]
-p
: 显示进程的PID-u
: 显示进程的所属用户
终止进程
kill -l
- 查看可用的信号(代号 - 名称), 常用信号:
1
- SIGHUP - 该信号让进程立刻关闭, 然后重新读取配置重启2
- SIGINT - 用于终止前台进程, 相当于ctrl+C
8
- SIGFPE - 在发送致命的算术运算错误时发出该信号9
- SIGKILL - 立即结束程序运行, 该信号不能被阻塞/处理和忽略, 一般用于强制终止进程14
- SIGALRM - 时钟定时信号, 计算实际时钟时间15
- SIGTERM - 正常结束进程的信号, kill命令的默认信号, 程序异常可以阻塞该信号18
- SIGCONT - 让暂停的进程恢复执行, 该信号不能被阻塞19
- SIGSTOP - 暂停前台进程, 相当于ctrl+Z
, 该信号不能被阻塞
- 查看可用的信号(代号 - 名称), 常用信号:
kill [-信号] 进程PID或进程名
killall [选项][-信号] 进程名
: 按照进程名管理进程-i
: 交互式, 询问是否要杀死某个进程-I
: 忽略进程名大小写
pkill [选项][信号] 进程名
: 按进程名杀死进程(基本同killall)-t 终端号
: 按终端号管理进程(即踢出用户)- 使用
w
查看登录用户信息 - 然后
pkill
处理
- 使用
工作管理
- 把进程放入后台执行方法:
- 输入命令之后加上
&
符, 进入后台运行 ctrl+Z
: 暂停前台进程, 放入后台(暂停状态),ctrl+C
是最终前台进程
- 输入命令之后加上
- 查看后台进程
jobs [-l]
-l
: 显示PID
- 将后台暂停的工作恢复到前台执行:
fg %工作号
%
符号可以省略, 工作号由jobs
查看(注意工作号与PID区别)
- 将后台暂停的工作恢复到后台执行:
bg %工作号
- 有些特殊命令不能在后台执行(如交互式进程top/vim)
系统资源查看
vmstat [刷新延时][刷新次数]
- 监控系统资源(比top命令输出简洁一些)
dmesg
: 查看开机时内核检测信息- 输出信息很多, 常配合管道符
|
使用grep
查找所需内容
- 输出信息很多, 常配合管道符
free
: 查看内存使用状态free [-b|-k|-m|-g]
-b
: 以字节为单位显示-k
: 以KB为单位显示(默认此项)-m
: 以MB为单位显示-g
: 以GB为单位显示
- 缓存(cache)和缓冲(buffer) 区别:
- 缓存(cache)是用来加速数据读取, 缓冲(buffer)是加速数据写入
- 查看CPU信息:
cat /proc/cpuinfo
: 查看文件内容- 注意
dmesg
也可以查看CPU信息(注意大小写)
- 注意
uptime
命令- 显示系统的启动时间和平均负载, 相当于
top
输出的第一行,w
命令也可以看到这个数据
- 显示系统的启动时间和平均负载, 相当于
- 查看系统与内核相关信息
uname [选项]
-a
: 查看系统所有相关信息-r
: 查看内核版本-s
: 查看内核名称
- 判断当前系统的位数
file /bin/ls
- 没有直接获取系统位数的命令, 可以提供获取外部命令文件的信息间接获取操作位数
- 查询当前Linux系统发行版本
lsb_release -a
(redhat)
- 列出进程打开或使用的文件信息
lsof [选项]
-c 字符串
: 只列出以字符串开头的进程打开的文件-u 用户名
: 只列出用户进程打开的文件-p PID
: 列出某个进程打开的文件
系统定时任务
-
crond 服务管理与访问控制(一般是默认启用的)
service crond restart
chkconfig crond on
-
定时任务:
crontab [选项]
-e
: 编辑crontab定时任务(会打开vim编辑器)-l
: 查询crontab任务-r
: 删除当前用户所有的crontab任务
-
任务编辑格式:
* * * * * command
- 第1个
*
: 一个小时中的第几分钟(0-59)表示分钟 - 第2个
*
: 一天中的第几小时(0-23)表示小时 - 第3个
*
: 一个月中的第几天(1-31)表示日份 - 第4个
*
: 一年中的第几月(1-12)表示月份 - 第5个
*
: 一周中的星期几(0-7)(07都代表星期日)
- 第1个
- 特殊符号:
*
号表示任意该段时间,
号表示不连续时间的分隔符-
号表示连续时间的范围连接符*/n
表示每隔n的该段时间执行一次
- 星期数和日份数表示的都是天的单位, 同时设置两项是表示 或 的关系