Linux 系统管理

说明:基于 Centos6.x 系统环境

Linux 启动管理

一、系统运行级别

1.运行级别

级别 含义
0 关机
1 单用户模式,类似安全模式,用于系统修复
2 不完全的命令模式,不含NFS服务
3 完全的命令行模式,标准字符界面
4 系统保留
5 图形模式
6 重启动

查看系统的运行级别 runlevel

1
2
3
4
[root@kernel ~]# runlevel 
N 3

# N 表示上一次运行的级别为空,3表示当前的运行级别

2.修改系统默认运行级别

编辑配置文件 vi /etc/inittab 可以修改系统的默认运行级别

  1. 系统登陆前执行的文件 /etc/rc.d/rc.local 可用于设置开机启动脚本
1
2
3
4
5
# 举例
# 脚本记录系统启动时间,lock文件的修改时间就是系统的启动时间
touch /var/lock/subsys/lock
# apache 开机自启动
/etc/rc.d/init.d/httpd start

二、启动引导程序(centos6.x)

grub

1.grub程序目录 /boot

2.grub 配置文件

/boot/grub/grub.conf #源文件

/etc/grub.conf #软链接

/boot/grub/grub.cfg #centos7.x 的配置文件

3.启动引导修复

4.grub加密,增加安全性

三、系统修复(需要拿到本机)

1.单用户模式

找回密码

2.光盘模式

在安全模式 找回密码

Linux 服务管理

一、服务的简介与分类

1.RPM包默认安装的服务

​ 独立的服务

​ 1)启动方法

​ 2)自启动方法

​ 基于xinetd的服务

​ 1)启动方法

​ 2)自启动方法

2.源码包安装的服务

​ 1)启动方法

​ 2)自启动方法

查询启动的服务

chkconfig —list

systemctl list-unit-files

RPM 包默认安装的服务管理(centos6)

1独立服务管理

​ 1)独立服务的启动管理

  • 使用/etc/init.d/目录中的启动脚本启动服务

    /etc/init.d/httpd start

  • 使用service 命令启动独立的服务

    service 独立服务的服务名 start |stop |restart|…

​ 2)独立服务的自启动管理

  • 使用chkconfig 服务自启动管理命令

    chkconfig [–level 运行级别] [独立服务名] [on|off]

  • 修改文件 /etc/rc.d/rc.local 设置自启动 推荐使用

    /etc/rc.d/init.d/httpd start

  • 使用ntsysv命令管理自启动,作用等同于chkconfig,图形界面

2基于xinetd的服务

​ 了解即可

源码包安装的服务

1.启动

绝对路径启动

/usr/local/nginx/bin/nginx start |stop|restart|…

2.自启动

启动命令加入系统启动文件(推荐)

vi /etc/rc.d/rc.local

/usr/local/nginx/bin/nginx start

netstat -tuin

服务优化

和windows类似,不懂的服务不要动,关闭不需要的服务,常见的Linux服务的作用

服务名称 功能简介 建议
acpid 电源管理接口。如果是笔记本用户建议开启,可以监听内核层的相关电源事件。 开启
anacron 关闭
alsasound 关闭
apmd 关闭
atd 关闭
auditd 开启
autofs 关闭
avahi-dacmon 关闭
bluetooth 关闭
capi 关闭
chargen dgram 关闭
chargen-stream 关闭
cpuspeed 开启
crond 开启
cvs 关闭
daytime-dgram 关闭
daytime-stream 关闭
echo-dgram 关闭
echo-stream 关闭
firstboot 关闭
gpm 开启
haldaemon 关闭
hidd 关闭
hplip 关闭
httpd 开启
ip6tables 关闭
iptables 开启
irda 关闭
irqbalance 开启
isdn 关闭
kudzu 关闭
Lvm2-monitor 开启
mcstrans 开启
mdmonitor 关闭

Linux 进程管理与工作管理

一、进程管理

1.进程简介

进程管理的作用

  • 判断服务器的健康状态

  • 查看系统中的所有进程

  • 杀死进程

    正常关闭失效时,才杀死进程

    服务器最理想的状态,内存占用不超过70%,cpu占用不超过90%

2.进程的查看

1)ps auxps -le 命令,只是显示当前进程状态

选项

a 显示一个终端的所有进程

u 显示进程的归属用户及内存使用情况

x 显示没有控制终端的进程

-l 长格式显示,显示更加详细的信息

-e 显示所有进程,和-A作用一致

ps aux 输出项目介绍

USER PID %CPU %MFM VSZ RSS TTY STAT START TIME COMMAND
用户 ID号 cpu% 内存% 虚拟内存kb 物理内存 终端 状态 启动时间 运算时间 进程名称

STAT 进程状态,常见的有

D
R
S
T
W
X
Z

2)top命令,实时显示进程状态

top [选项]

3)pstree -p 查看进程树
进程的管理

kill -l 查询系统中的信号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@mini ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

常用的信号

信号代号 信号名称 说明
1 SIGHUP 让进程立即关闭,然后然后重新读取配置文件之后重启
2 SIGINT 程序终止信号,终止前台进程。相当于ctrl+c快捷键
8 SIGFPE 在发生致命的运算错误时发出,包括浮点运算错误溢出
9 SIGKILL 用来立即结束程序的运行,本信号不能被阻塞、处理和忽略,一般用于强制终止进程
14 SIGALRM 时钟定时信号,计算的实际时间或时钟时间

1)kill 命令

kill [信号] PID

kill -9 3837

killall [选项] 进程名

killall -9 httpd

剔除系统的其他用户按照终端号

pkill [信号] [选项] 进程名

1
2
3
4
5
6
7
8
# 强制杀死从pts/1 虚拟终端登陆的进程
pkill -9 -t pts/1

# 查看自己登陆的终端
[root@mini ~]# w
16:15:33 up 1:25, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.18.4 14:50 5.00s 0.12s 0.01s w

二、工作管理

管理系统中前台运行的程序和后台运行的程序

1.如何把命令任务放入后台

1)第一种方法是 “ 命令 & ” ,把任务放入后台运行,常用的有安装程序,打包压缩任务

2)第二种方法是 “ Ctrl+z ” ,暂停任务后放入后台

2.后台任务管理

1)查看后台的任务(工作)

jobs [-l]

-l 显示工作的PID

1
2
3
4
[root@mini ~]# jobs -l
[1]+ 1858 停止 (tty 输出) vi

# [1] 是工作号,1858是PID

2)将后台的工作恢复到前台

fg %工作号

参数

%工作号:%可以省略,但注意工作号与PID的区别

1
fg 1

3)把后台暂停的工作恢复后台执行

bg %工作号

1
bg 1

4)远程登陆时,后台命令脱离终端运行

  • 方法一,把需要后台执行的命令加入/etc/rc.local 文件,需重启服务器
  • 方法二,使用系统定时任务
  • 方法三,使用nohup 命令,使用方法 nohub [命令] &
  • 方法四,使用tmux工具

三、系统资源查看

1.监控系统资源 vmstat

vmstat [刷新延时 刷新次数]

1
2
3
4
5
6
[root@mini ~]# vmstat 1 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 439424 2848 342328 0 0 33 19 57 108 0 0 100 0 0
0 0 0 439400 2848 342328 0 0 0 0 50 85 0 0 100 0 0
0 0 0 439400 2848 342328 0 0 0 0 47 79 0 1 99 0 0

输出结果解释

procs 进程信息字段

​ r 等待运行的进程数,数量越大,系统越繁忙

​ b 不可被唤醒的进程数量,数量越大,系统越繁忙

memory 内存信息字段

​ swpd 虚拟内存使用情况,单位kb

​ free 空闲内存容量,单位kb

​ buff 缓冲的内存容量,单位kb

​ cache 缓存的内存容量,单位kb

swap 交换分区的信息字段

​ si 冲磁盘中换到内存中的数据量,单位kb

​ so 从内存中交换到磁盘中的数据量,单位kb,此两数越大,系统性能越差

io 磁盘读写信息字段

​ bi 从块设备读入数据的总量,单位是块

​ bo 写到块的数据总量

system 系统信息字段

​ in 每秒中断的进程数

​ cs 每秒进行切换的次数,此两数越大,代表系统越繁忙

CPU CPU信息字段

​ us 非内核进程消耗的cpu运算时间%

​ sy 内核进程消耗的cpu运算时间%

​ id 空闲cpu的%

​ wa 等待I/O 消耗的cpu%

​ st 被虚拟机占用的cpu%

2.显示开机时内核检测信息 dmesg

1
2
3
例如
dmesg | grep CPU
# 查看cpu信息

3.查看内存使用情况 free

free [选项]

常用 free -h

选项

-b 以bt为单位显示

-k 以Kb为单位显示

-m 以Mb为单位显示

-g 以Gb为单位显示

-h 人性化显示

4.查看cpu 信息

cpu信息保存在文件/proc/cpuinfo 文件中,只要查看文件就可以

1
cat /proc/cpuinfo

5.查看本机登陆用户信息

w 命令 和 who

1
2
3
4
[root@kernel ~]# w
17:50:45 up 3 days, 2:06, 1 user, load average: 0.01, 0.03, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 60.25.49.211 17:27 5.00s 0.02s 0.00s w

6.查看系统启动时间和平均负载

uptime 显示的就是top命令的第一行

7.查看系统内核信息

uname [选项]

-a 查看所有信息

-r 查看内核版本

-s 查看内核名称

file /bin/ls # 查看系统位数

lsb_release -a # 查看系统的发行版本

四、系统定时任务(闹钟)

1.一次性执行定时任务 at

1)at服务的管理与访问

at命令需要atd服务的支持,需要启动atd服务,一般系统默认开启

1
service atd start

atd 开机自启动

1
chkconfig atd on

黑名单

禁止某个用户使用定时任务,用户名写入黑名单文件即可“/etc/at.deny”

2)at 命令

at [选项] 时间

选项

-m 当at工作完成,无论是否有输出,都emai 通知执行at的用户

-c 显示at工作的实际内容

2.循环执行定时任务 crontab 常用的重点

1)cron服务的开启

crontab 命令需要crond服务支持,需要对应的服务启动,系统默认自启动

1
2
service crond restart
chkconfig crond on # 设定服务开机自启动

黑名单

禁止某个用户使用定时任务,用户名写入黑名单文件即可“/etc/cron.deny”

2)使用命令行设定定时任务crontab -e 不推荐使用

语法

1
crontab [ -u user ] file

1
crontab [ -u user ] { -l | -r | -e }

说明:

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数说明

  • -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
  • -r : 删除目前的时程表
  • -l : 列出目前的时程表

时间格式如下:

1
f1 f2 f3 f4 f5 program
1
2
3
4
5
6
7
8
*    *    *    *    *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 一年中的第几月份 (1 - 12)
| | +--------------- 一月中的第几天 (1 - 31)
| +-------------------- 一天中的第几小时 (0 - 23)
+------------------------- 一小时的第几分钟 (0 - 59)

3)注意事项

  • 六个选项必须有,不确定使用“*”代表任意时间
  • 最小有效时间是分钟,最大有效时间是月
  • 日期和星期不要写在一条定时任务中,日期和星期是或的关系
  • 不管是直接写命令还是在脚本中写命令,最好都是绝对路径

4)crontab 设置,通过配置文件执行定时任务,推荐使用

配置文件vi /etc/crontab

5)anacron

防止因为系统关机crontab任务没有执行,避免漏执行任务

anacron的配置文件/etc/anacrontab

总结

  • 方法一:把需要定时执行的工作写成脚本程序,并赋予执行权限,然后把脚本放在 /etc/cron.{daily,weekly,monthly}任意一个目录中
  • 方法二:是修改/etc/crontab 配置文件,自己加入自己的定时任务,注意指定脚本的执行者身份

Linux 日志管理

一、日志服务简介

1.日志服务

Centos6.x中的日志服务由rsyslogd取代了原来的syslogd服务

rsyslogd具有的新特点

  • 基于tcp网络协议传输日志信息
  • 更安全的网络传输方式
  • 有日志消息的及时分析框架
  • 后台数据库
  • 配置文件中可以写简单的逻辑判断
  • 与syslog配置文件相互兼容

2.系统中常见的日志文件

日志文件 说明
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 系统开机时自检的信息,也可以使用dmesg查看
/var/log/btmp 错误登陆日志,二进制文件,使用lastb命令查看
/var/log/lastlog 所有用户最后一次登陆时间,二进制文件,lastlog命令查看
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息日志。如果系统出现问题,熟悉查看这个文件
/var/log/secure 记录验证和授权方面的信息,涉及账户和密码的程序都会记录,比如ssh登陆,su切换用户,sudo授权,甚至添加用户和修改密码都记录在这里
/var/log/wtmp 永久记录所有用户的登陆注销信息,同时记录系统的启动重启关机事件。也是二进制文件,使用last命令查看
/var/run/utmp 记录当前已经登陆的用户信息,只记录当前登陆用户的信息,二进制文件,使用w、who、users等命令查 看

除了系统默认日志,采用RPM方式安装的服务也会默认把日志记录在/var/log目录中。(源码包安装的服务日志是在源码包指定目录中)这些日志不是由rsyslogd服务记录和管理的,而是各个服务自己的日志管理文档记录自身日志

日志文件 说明
/var/log/httpd/ RPM包安装的apache服务默认日志目录
/var/log/mail RPM包安装邮件服务的额为日志目录
/var/log/samba RPM包安装samba服务的日志目录
/var/log/sssd 守护进程安全服务日志目录

二、日志服务rsyslogd

1日志文件的格式

只要由rsyslogd记录的日志文件,格式都是一样的。基本格式包含以下四列

  • 事件产生的事件
  • 发生事件的服务器主机名
  • 产生事件的服务名或程序名
  • 事件的具体信息

2.rsyslogd服务的配置文件

1)/erc/rsyslogd.conf

2)日志名称

3)日志等级

等级名称 说明
debug 一般的调试信息说明
info 基本的通知信息
notice 普通信息,但有一定的重要性
warning 警告信息,但是不会影响到服务或系统运行
err 错误信息,一般err信息可以影响服务或系统的运行
crit 临界状态信息,比err还要严重
alert 警告状态信息,比crit还严重,必须立即采取行动
emerg 疼痛等级信息,系统已经无法使用了
* 代表所有日志等级
none 忽略日志服务

自己定义日志

1
2
3
4
5
vi /etc/rsyslog.conf
# 写入以下内容
*.crit /var/log/alert.log
# 重启服务
service rsyslog restart

日志轮替(循环保存最近一段时间的日志,类似行车记录仪)

1.日志文件的命名规则

2.配置文件/etc/logrotate.conf /etc/logrotate.d

配置文件主要参数解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# cat /etc/logrotate.conf
# 底下的设定是 "logrotate 的默认值" ,如果別的文件设定了其他的值,
# 就会以其它文件的设定为主
weekly          //默认每一周执行一次rotate轮转工作
rotate 4       //保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指没有备份
create         //自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志
dateext       //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
compress      //是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行

include /etc/logrotate.d
# 将 /etc/logrotate.d/ 目录中的所有文件都加载进来

/var/log/wtmp {                 //仅针对 /var/log/wtmp 所设定的参数
monthly                    //每月一次切割,取代默认的一周
minsize 1M              //文件大小超过 1M 后才会切割
create 0664 root utmp            //指定新建的日志文件权限以及所属用户和组
rotate 1                    //只保留一个日志.
}
# 这个 wtmp 可记录用户登录系统及系统重启的时间
# 因为有 minsize 的参数,因此不见得每个月一定会执行一次喔.要看文件大小。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
compress                                   通过gzip 压缩转储以后的日志
nocompress                                不做gzip压缩处理
copytruncate                              用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
nocopytruncate                           备份日志文件不过不截断
create mode owner group             轮转时指定创建新文件的属性,如create 0777 nobody nobody
nocreate                                    不建立新的日志文件
delaycompress                           和compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress                        覆盖 delaycompress 选项,转储同时压缩。
missingok                                 如果日志丢失,不报错继续滚动下一个日志
errors address                           专储时的错误信息发送到指定的Email 地址
ifempty                                    即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
notifempty                               当日志文件为空时,不进行轮转
mail address                             把转储的日志文件发送到指定的E-mail 地址
nomail                                     转储时不发送日志文件
olddir directory                         转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir                                   转储后的日志文件和当前日志文件放在同一个目录下
sharedscripts                           运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
prerotate                                 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
postrotate                               在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
daily                                       指定转储周期为每天
weekly                                    指定转储周期为每周
monthly                                  指定转储周期为每月
rotate count                            指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
dateext                                  使用当期日期作为命名格式
dateformat .%s                       配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size            当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
当日志文件 >= log-size 的时候就转储。 以下为合法格式:(其他格式的单位大小写没有试过)
size = 5 或 size 5 (>= 5 个字节就转储)
size = 100k 或 size 100k
size = 100M 或 size 100M

3.把自己的日志(源码安装软件的日志)加入轮替

  • 方法一,在/etc/logrotate.conf 配置文件写入日志轮替策略
  • 方法二,在/etc/logrotate.d/目录中新建子配置文件并写入日志轮替策略

4.手动强制执行轮替

logrotate [选项] 配置文件

选项

-v 显示日志轮替过程

-f 强制进行日志轮替

参考资料

https://www.cnblogs.com/txlsz/p/13126723.html


Linux 系统管理
http://www.keker.top/2018/10/14/Linux/Linux 系统管理/
作者
Keker
发布于
2018年10月14日
许可协议