学习总结:Linux系统管理

一、进程管理

1. 进程管理的作用

  • 判断服务器健康状态
  • 查看系统中所有进程
  • 杀死进程

2. 进程的查看–ps和pstree命令

  • 查看系统中所有进程,使用BSD操作系统格式
ps aux 
  • 查看系统中所有进程,使用linux标准命令格式
ps -le

选项: -a:显示一个终端的所有进程,除了会话引线 -u:显示进程的归属用户及内存的使用情况 -x:显示没有控制终端的进程 -l:长格式显示 -e:显示所有进程,和-A作用一致

  • ps命令进程输出的说明:
    • USER:该进程是由哪个用户产生的
    • PID:进程的ID号
    • %CPU:该进程占用的CPU资源的百分比,占用越高,进程越消耗资源
    • %MEM:该进程占用物理内存的百分比,占用越高,进程越消耗资源
    • VSZ:该进程占用虚拟内存的大小,单位KB
    • RSS:该进程占用实际物理内存的大小,单位KB
    • TTY:该进程是在哪个终端中运行的,其中tty1-tty7代表本地控制台终端,tty1-tty6代表本地的字符界面终端,tty7是图形终端,pts/0-255代表虚拟终端。
    • STAT:进程状态:
      • R:运行
      • S:睡眠
      • T:停止状态
      • s:包含子进程
      • +:位于后台
    • START:该进程的启动时间
    • TIME:该进程占用CPU的运算时间,注意不是系统时间
    • COMMAND:产生此进程的命令名

  • 查看进程树
pstree

选项:

  • -p:显示进程的PID
  • -u:显示进程的所属用户

3. 进程的查看–top命令

top
  • 选项:
    • -d 秒数:指定top命令默认每隔几秒更新,默认是3秒
    • -b:使用批处理模式输出,一般和“-n”选项合用
    • -n 次数:指定top命令执行的次数,一般和-b选项合用
  • 在top命令的交互模式中可以执行的命令:
    • ?或h:显示交互模式的帮助
    • P:以CPU使用率排序,默认就是此项
    • M:以内存的使用率排序
    • N:以PID排序
    • q:推出top
  • top命令前5行的作用:
top - 22:52:38 up  3:41,  1 user,  load average: 0.15, 0.16, 0.23
Tasks: 223 total,   2 running, 221 sleeping,   0 stopped,   0 zombie
%Cpu(s):  9.7 us,  2.8 sy,  0.0 ni, 86.4 id,  1.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3967824 total,   985600 free,  1241660 used,  1740564 buff/cache
KiB Swap:  4115452 total,  4115452 free,        0 used.  2213400 avail Mem 

  • 第一行: 系统当前时间 系统的运行时间 当前登录了几个用户 系统在之前1分钟,5分钟,15分钟的平均负载,一般小于1时,负载较小。如果大于1,系统已经超出负载。
  • 第二行: Tasks: 系统中的进程总数 2 running: 正在运行的进程数 221 sleeping:睡眠的进程 0 stopped:正在停止的进程 0 zombie:僵尸进程,如果不是0,需要手工检查僵尸进程
  • 第三行: %Cpu(s):用户模式占用CPU的百分比 2.8sy:系统模式占用的CPU百分比 0.0ni:改变过优先级的用户进程CPU占用百分比 86.4id:空闲CPU的CPU百分比 1.1wa:等待输入/输出的进程的占用百分比 0.0hi:硬终端请求服务占用的CPU百分比 0.1si:软终端请求服务占用的CPU百分比 0.0st:st(Steal time)虚拟时间百分比,就是当由虚拟机时,虚拟CPU等待实际CPU的时间百分比
  • 第四行: Mem:物理内存的总量,单位KB free:空闲的物理内存数量 userd:已经使用的物理内存数量 buff:作为缓冲的内存数量
  • 第五行: Swap:交换分区(虚拟内存)的总大小 free:空闲交换分区的大小 userd:已经使用的交互分区的大小

    • top只能查看部分进程情况,如果要查看系统中所有进程的CPU占用情况,则可以用以下方式,将结果存于top.log中:
top -b -n 1 > top.log

4. 杀死进程

  • 1.kill命令
    • 查看可用的进程信号
      kill -l
      
    • 重启进程
      kill -1 2235
      
    • 根据进程信号,-1既-HUP:
      kill -HUP 2235
      
    • 强制杀死进程
      kill -9 2235
      
  • 2.killall命令
    • killall [选项][信号]进程名 按照进程名杀死进程 选项: -i :交互式,询问是否杀死某个进程 -I:忽略进程名的大小写
  • 3.pkill命令
    • pkill [选项][信号]进程名 按照进程名杀死进程 选项: -t 终端号:安装终端号踢出用户
    1. 查看当前登录用户,终端号可以这个命令查看
    w
    
    1. 强制杀死从pts/1虚拟终端登录的进程
    pkill -9 -t pts/1
    

5. 修改进程优先级

Linux操作系统是一个多用户多任务的操作系统,linux系统中运行这非常多的进程,但是cpu在同一个时钟周期内只能运算一个指令,进程优先级决定了每个进程处理的先后顺序。

查看优先级可以根据上面的查看进程命令ps -le查看,

  • PRI,NI都表示优先级,其中PRI代表Priority,NI代表Nice,数字越小代表该进程优先级越高。
  • PRI是不能修改的,但用户可以修改NI,但是系统生效的优先级是PRI+NI,所有修改NI可以修改进程的优先级。
  • 修改NI值的几个注意事项:
    • NI值的范围是-20到19
    • 普通用户调整NI的范围是0到19,而且只能调整自己的进程
    • 普通用户只能调高NI值,不能降低
    • root用户才能设定进程NI值位负值,而且可以调整任何用户的进程
    • PRI(最终值)= PRI(原始值) + NI
    • 用户只能修改NI的值,不能直接修改PRI
  • 修改优先级命令:
nice [选项]命令

nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在的进程的NI值 选项: -n NI值:给命令赋予NI值

例如将apache服务所有进程优先级改为-5:

nice -n -5 service httpd start
  • 修改已经存在的进程的NI值的命令 例如将PID为2125的进程该为-10: renice -10 2125
renice[优先级] PID

二、工作管理

1. 工作管理简介

工作管理指的是在单个登录终端中同时管理多个工作的行为。类似于在windows中,将程序放在后台运行。

  • 查看后台作业,加-l可以查看进程的PID号 注:结果显示+号表示最近一个放入后台的工作,也是工作恢复时默认恢复的工作,-号代表倒数第二个放入后台的工作
jobs [-l]

2. 工作管理方法

  • 把进程放入后台方式: 1.命令 & : 把命令放入后台,并在后台运行 2.命令执行后 ctrl+z : 放在后台暂停
  • 将后台暂停的工作恢复到前提运行:
fg %工作号

%可以省略,工作号是前面的1,2,3,而不是PID号

  • 将后台暂停的工作恢复到后台运行:
bg %工作号

3. 后台命令脱离终端

命令在后台只在当前终端执行,如果关闭当前终端,后台命令也会关闭,因为终端关闭时其实是给kill -l发送一个信号。而一些服务要脱离终端运行,例如mysql的服务,mysqld这个d是守护进程的意思。

后台程序脱离终端方法:

  • 1.把需要后台执行的命令加入 /etc/rc.local文件
  • 2.使用系统定时任务,让系统在指定的时间执行某个后台任务
  • 2.nohup [命令] &

三、系统资源查看

1.vmstat 监控系统资源

vmstat [刷新延时 刷新次数]
比如:vmstat 1 3  每隔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
 4  0      0 1636132  55736 1163332    0    0   212    86  198  856  8  2 85  6  0
 3  0      0 1632764  55736 1163364    0    0     0     0 1020 7142 19  6 74  1  0
 3  0      0 1630328  55736 1163360    0    0     0     0 1186 6955 17  5 76  1  0

说明:

  • procs:进程信息字段
    • r :等待运行的进程数,数量越大,系统越繁忙
    • b: 不可被唤醒的进程数量,数量越大,系统越繁忙
  • memory:内存信息字段
    • swpd:虚拟内存的使用情况,单位kb
    • free:空闲的内存容量,单位kb
    • buff:缓冲的内存容量,单位kb
    • cache:缓存的内存容量,单位kb
  • swap:交换分区的信息字段
    • si:从磁盘中交换到内存中数据的数量,单位kb
    • so:从内存中交换到磁盘中数据的数量,单位kb 此两个数越大,说明数据需要经常在磁盘和内存之间交换,系统性能越差
  • io:磁盘读写信息字段
    • bi:从块设备读入数据的总量,单位是块
    • bo:写到块设备的数据的总量,单位是块 此两个数越大,代表系统的I/O越繁忙
  • system:系统信息字段
    • in:每秒被中断的进程次数
    • cs:每秒进行的事件切换次数,此两个数越大,代表系统与接口设备的通信非常繁忙
  • CPU: cpu信息字段
    • us:非内核进程消耗cpu运算时间的百分比
    • sy:内核进程消耗cpu运算时间的百分比
    • id:空闲cpu的百分比
    • wa:等待I/0所消耗的cpu百分比
    • st:被虚拟机所盗用的cpu百分比

缓存cache:用来加速数据从硬盘中读取 缓冲buffer:加速数据写入

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

dmesg
dmesg | grep CPU

3.free命令查看内存使用状态

free [-b|-k|-m|-g]

选项:

  • -b:以字节为单位显示
  • -k:以kb为单位显示,默认
  • -m:以MB为单位显示
  • -g:以GB为单位显示

4.查看cpu的信息

cat /proc/cpuinfo

5. uptime 命令

uptime

显示系统的启动时间和平均负载,也就是top命令的第一行,w命令也可以看到这个数据

5. 查看系统与内核相关信息

uname [选项]

选项:

-a:查看系统所有相关信息
-r:查看内核版本
-s:查看内核名称

6. 查看操作系统的位数:

随便打开一个外部命令,看这个命令是几位,则操作系统的位数,如:

file /bin/ls

7. 查询当前linux系统的发行版

lsb_release -a

对比上面的查看内核版命令:uname -r

8. 列出进程打开或使用的文件信息

lsof [选项]

选项:

-c 字符串: 只列出以`字符串`开头的进程打开的文件
-u 用户名:只列出某个用户的进程打开的文件
-p pid:列出某个pid进程打开的文件

如:

lsof | more 查看系统中所有进程调用的文件
lsof /sbin/init 查询某个问被哪个进程调用
lsof -c httpd 查看httpd进程调用了哪些文件
lsof -u root 按照用户名,查询某用户的进程调用的文件名

四、系统定时任务

1. at一次执行

at服务是否安装

chkconfig --list | grep atd

at服务的状态

service atd status

at服务的启动

service atd restart 

at [选项]时间

  • 选项: -m:当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户 -c 工作号:显示该at工作的实际内容
  • 时间: HH:MM 例如:03:30 HH:MM YYYY-MM-DD 例如:03:30 2016-07-15 HH:MM[am|pm][month][date] 例如:02:30 July 25 HH:MM[am|pm] + [minutes|hours|days|weeks] 例如:now+5 minutes

查询当前服务器上的at工作:

atq

删除指定的at任务:

atrm [工作号]

2. crontab循环定时任务

service crond restart
chkconfig crond on

crontab [选项] 选项:

-e:编辑crontab定时任务
-l: 查询crontab任务
-r:删除当前用户所有的crontab任务

3.系统的crontab设置

执行系统的定时任务的方法:

  • 手工执行定时任务
  • 系统定时任务:
    • 第一种是把需要定时执行的脚本复制到/etc/cron.{daily,weekly,monthly}目录中的任意一个。
    • 第二种是修改 /etc/crontab配置文件

4. anacron配置及总结

anacron是用来保证在系统关机的时候错过的定时任务,可以在开机之后再执行。

  • anacron会使用一天,七天,一个月作为检测周期
  • 在系统的/var/spool/anacron/目录中存在cron.{daily,weekly,monthly}文件,用于记录上次执行cron的时间
  • 和当前时间做比较,如果两个时间的差值超过了anacron指定的时间差值,证明有cron任务被执行
  • 配置文件:
vim /etc/anacrontab

linux软件安装总结

一、软件包概念

  • 源码包(需要自己编译)
  • 二进制包(已经编译好:rpm包,系统默认包)
  • 脚本安装包:将在安装上述两种包的过程中手动输入的命令的过程写成脚本,双击执行即可,省去手动输入的麻烦。

二、rpm命令管理

1.包全名与包名

  • 包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径
  • 包名:操作已经安装的软件包时,使用包名,搜索的是/var/lib/rpm/中的数据库

2.rpm命令

rpm包默认安装位置

/etc/   配置文件安装目录
/usr/bin/   可执行的命令安装目录
/usr/lib/   程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件保存位置
  • 安装
rpm -ivh 包全名
选项:
-i install
-v 显示详细信息
-h 显示进度
--nodeps不检测依赖性
  • 升级与卸载
rpm -Uvh 包全名
选项:
-U(upgrade)升级
rpm -e 包名
选项:
-e(erase)卸载
--nodeps不检查依赖性
  • 查询
rpm -q 包名(查询包是否安装)
rpm -qa (查询所有已安装的包)
rpm -qi 包名(查询包信息)
rpm -ql 包名(查询包安装位置)
rpm -qR 包名 (查询软件包的依赖包)→ 会列出所有依赖
-p 查询未安装包的信息
rpm -qf 系统文件名(查询系统文件属于哪个包
查询软件包详细信息
rpm -qi 包名
选项:
-i 查询软件信息
-p 查询未安装包信息
查询包中文件安装位置
rpm -ql 包名
选项:
-l 列表
-p 查询未安装包信息
查询软件包的依赖性
rpm -qR 包名
选项:
-R 查询软件包的依赖性
-p 查询未安装包信息
  • RPM包校验
rpm -V 检查包,是否被动过
  • RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径 
前面的【.】代表当前路径,不能省略。
文件绝对路径和包里文件的绝对路径对应,也就是告诉了cpio要去包里提取哪个文件。
注:cpio只知道提取文件,并不知道要从什么地方提取文件,因此通常要使用【|】管道符或【<】输入重定向告诉cpio应该从什么设备去取出文件。

三、yum在线安装

1. yum源文件

  • yum的优点:将所有软件包放到官方服务器上,当进行yum在线安装时,可以自动解决依赖性问题。(rpm缺点:安装过程中,rpm包依赖性太强)
  • redhat的yum在线安装需要付费,centOS不需要。
  • 在【/etc/yum.repos.d/】目录中,默认有4个yum源文件,其中【CentOS-Base.repo】是基本yum源文件,如果能上网,那它是默认生效的,而其他的都是默认不生效的。
  • [base]:名字可以随便起。
  • name:名字也是随便起。
  • mirrorlist和baseurl一个是主站点,一个是辅助站点,这两个有一个就行。可以找一个163或其他yum源更换。
  • enabled:默认最后一个容器不生效,其他容器都生效。
  • gpgcheck:一般都要开启,开启后安装时会验证rpm包是否是官方的,以保证系统安全。
  • gpgkey:默认系统安装后,在目录【/etc/pki/rpm-gpg】下都会存在数字证书。注:前面的【file://】表示文件协议,后面的【/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6】是数字证书的位置。

2.光盘yum源搭建:

  • 1.挂载光盘
建立挂载点:mkdir /mnt/cdrom
挂载光盘:mount /dev/chrom /mnt/cdrom
  • 2、使网络yum源失效
进入yum源目录:cd /etc/yum.repos.d/
修改yum源文件后缀名,使其失效:
mv CentOS-Base.repo CentOS-Base.Repo.bak
  • 3、使光盘yam源生效:
vim CentOS-Media.repo

3.yum命令

  • 卸载:
yum -y remove 包名
选项:
-remove:卸载
-y:自动回答yes
(服务器使用最小化安装,用什么装什么,尽量不卸载)
  • Yum 软件组管理命令
yum grouplist
#列出所有可用的软件组列表
yum groupinstall 软件组名
#安装指定软件组,组名可以由grouplist查询出来
yum groupremove 软件组名
#卸载指定软件组

四、源码包安装

一般:

  • 源代码保存位置:/usr/local/src/
  • 软件安装位置:/usr/local/

1.源码包和rpm包的区别:

  • 1.rpm包安装位置不用指定,源码包安装位置必须指定。源码包没有卸载命令。卸载时直接删除文件夹即可。
  • 2.rpm包启动方式两种 service XXXX start(red hat 系列专属) 或 /etc/rc.d/init.d/xxx start 源码包不能用第一种。

2.源码包安装过程:

  • 1、由于源码都是c语言写的,所以要先安装c语言编译器:gcc
  • 2、从官方网站下载源码包 注:若已安装了二进制包,则源码包也是可以继续安装的,因为两者安装目录不一样。但是,并不建议这样做,因为端口会冲突。

3.编译

make编译
make clean 若报错,可使用该命令,删除编译缓存。
make install 编译安装

脚本安装

参考inmp

一键安装包,实际上还是安装的源码包和RPM包,只是把安装过程写成了脚本,便于安装:

  • 优点:简单,快捷、方便
  • 缺点:不能定义安装软件的版本, 不能定义需要的软件功能, 源码包的优势丧失了

其它命令

netstat -tlun
查找网络连接信息和系统开启的端口号
使用 -t 选项列出 TCP 协议的连接
使用 -l 选项列出正在监听的套接字
使用 -u 选项列出 UDP 协议的连接
使用 -n 选项禁用域名解析功能

Linux系统MySQL的安装与使用

安装与配置MySQL

安装MySQL数据库

MySQL数据库分服务器和客户端,服务器用于管理和维护数据库,客户端用于连接和访问数据库,可以用下列命令安装服务器和客户端。安装期间将会提示输入数据库管理员root的密码。

sudo apt-get install mysql-server

配置文件my.cnf

MySQL的配置文件是/etc/mysql/my.cnf,主要用于配置数据库文件的存储位置,日志文件等,以下是安装之后默认的配置参数。

2015.07.24_19h25m36s_003_

mysql配置参数2
注意:
每次修改my.cnf时,都需要重新启动mysqld守护进程,可以使用如下命令:

sudo /etc/init.d/mysql restart

MySQL的简单使用

使用mysql

进入mysql命令环境,使用如下命令,-u后跟用户名,-p后跟密码,没有则为空

mysql -u -root -p

创建 查询 使用和删除数据库

创建:

create database test;

查询:

show databases;

使用:

use test;

删除:

drop database test;

设置用户及访问权限

mysql的用户和密码都存在一个专用的数据库mysql中,管理员root可以在其中添加用户及赋权,命令如下:

GRANT ALL PRIVILEGES ON database TO username@"servername" IDENTIFIED BY 'password';

如果flush配置变量没有设为ON,或者启动mysql进程时没有使用“–flush”选项,需要使用flush命令,才能使添加的帐户的生效。

flush privileges

SQL脚本与批处理

可以将多条命令写入一个文件,以I/O的方式运行mysql,批量执行命令,命令如下 :

mysql -u username -p [password] < scriptfile

例如新建一个文件:test.sql,内容如下:

show databases;
use test;
show tables;
select * from user;

利用命令执行,则将会显示执行结果:

mysql -u root -p < test.sql;

如果是在mysql交互环境下,则可用“source” 或 “ \ . ” 命令运行sql脚本:

source test.sql;

\. test.sql