LINUX系统管理

观其大纲

第1部分 Linux的基础知识
第1章 Linux概述 
第2章 Linux系统的安装
KickStart开始自动安装 
PXE网络安装 
第3章 X Window图形用户界面和应用软件 
第4章 Shell的基本应用
常用Shell命令
通配符
正则表达式
vim
第2部分 Linux的系统管理
第5章 用户和组管理 
第6章 磁盘与文件系统管理
磁盘的识别与分区
建立和管理文件系统 
文件系统的挂载 
管理交换空间 
磁盘配额 
第7章 逻辑卷管理 
第8章 进程管理 
管理进程 
系统监视工具
计划任务 
第9章 软件管理
YUM
源代码安装
软件包管理
第10章 服务的管理 
管理服务
服务的可用性
服务管理工具
第3部分 Linux的网络配置
第11章 网络基础 
第12章 访问网络文件共享服务
网络文件系统NFS 
SMB/CIFS通用网络文件系统 
自动挂载网络存储服务 自动挂载(autofs)
第13章 管理常用网络服务 
管理NTP服务
管理CUPS打印服务 
管理SSH服务 
管理VNC服务 
第14章 常用网络服务器配置 
Web服务配置
FTP服务配置 
DNS服务配置
DHCP服务配置 
Mail服务配置 
第4部分 Linux的安全设置
第15章 Linux安全设置
文件的安全设置ACL 
文件系统的特殊权限:SUID/SGID/Sticky Bit 
磁盘的安全加密 
日志管理
第16章 LDAP网络用户配置
第17章 防火墙基本设置
iptables
第18章 管理SELinux
第5部分 Linux系统的故障排除
第19章 Linux引导过程与内核管理 
1引导过程
运行级别Runlevel
GRUB的更改
内核管理
内核模块管理
配置内核参数
第20章 系统恢复与故障排除
系统故障排除基础
修复引导问题 
救援模式

大纲细节

第1部分 Linux的基础知识
第1章 Linux概述 2
1.1 Linux简介 2
1.1.1 Linux系统的产生 2
1.1.2 Linux系统发展历程 3
1.1.3 Linux系统的应用 4
1.2 Linux的特点和组成 5
1.2.1 Linux特点 5
1.2.2 Linux系统的组成 6
1.2.3 Linux与其他操作系统的区别 6
1.3 Linux的版本介绍 8
1.3.1 Linux内核的版本 8
1.3.2 Linux发行版本 10
1.3.3 RedHat Enterprise Linux 6.0简介 12
第2章 Linux系统的安装 18
2.1 通过Anaconda进行图形安装 18
2.1.1 使用Anaconda安装 18
2.1.2 获取Linux的安装软件 18
2.1.3 确定安装硬件 19
2.1.4 启动Anaconda安装程序 20
2.2 安装后的初始化配置 26
2.3 使用KickStart进行自动安装 30
2.3.1 KickStart介绍 30
2.3.2 产生KickStart配置文件 31
2.3.3 开始自动安装 33
2.3.4 KickStart文件的实例 34
2.4 PXE网络安装 35
第3章 X Window图形用户界面和应用软件 40
3.1 X Window简介 40
3.1.1 X Window工作原理 40
3.1.2 X Window桌面环境 41
3.2 GNOME桌面环境 41
3.2.1 桌面与系统面板 41
3.2.2 Nautilus文件管理器 43
3.2.3 GNOME首选项 44
3.2.4 GNOME系统设置 45
3.2.5 登录窗口切换 46
3.3 Linux下的常用应用软件 47
3.3.1 OpenOffice简介 47
3.3.2 图像处理软件GIMP 49
3.3.3 看图软件Gwenview 50
3.3.4 文件查看器Document Viewer 50
3.3.5 网页浏览器FireFox 51
3.3.6 电影播放机 52
第4章 Shell的基本应用 53
4.1 Shell命令概述 53
4.1.1 Shell简介 53
4.1.2 Shell的启动 54
4.1.3 Shell命令格式 55
4.1.4 常用Shell命令 56
4.2 Bash的应用 61
4.2.1 命令补齐 61
4.2.2 命令历史记录 62
4.2.3 命令别名 63
4.2.4 通配符 63
4.3 正则表达式、管道与重定向 64
4.3.1 正则表达式 64
4.3.2 管道与重定向 67
4.4 文本编辑器vim 69
4.4.1 vim简介 69
4.4.2 vim的3种模式 70
4.4.3 vim的进入与退出 71
4.4.4 vim的基本操作命令 72
4.4.5 vim的高级命令 76
第2部分 Linux的系统管理
第5章 用户和组管理 80
5.1 什么是用户 80
5.1.1 用户账号文件/etc/passwd 80
5.1.2 用户影子文件/etc/shadow 82
5.1.3 组账号文件/etc/group 83
5.1.4 用户组影子文件/etc/gshadow 84
5.2 用户管理 85
5.2.1 添加用户 85
5.2.2 删除用户 87
5.2.3 修改用户信息 87
5.3 组管理 87
5.3.1 创建用户组 87
5.3.2 删除用户组 88
5.3.3 修改用户组信息 88
5.4 使用用户管理器管理用户和组 89
5.4.1 启动Red Hat用户管理器 89
5.4.2 添加用户 90
5.4.3 修改用户属性 90
5.4.4 添加用户组 91
5.4.5 修改用户组属性 92
第6章 磁盘与文件系统管理 93
6.1 磁盘的识别与分区 93
6.1.1 磁盘的分类 93
6.1.2 磁盘的组成 95
6.1.3 管理分区 97
6.2 建立和管理文件系统 99
6.2.1 管理文件系统 99
6.2.2 文件系统类型 101
6.2.3 文件系统结构 103
6.3 文件系统操作命令 104
6.3.1 文件与目录操作命令 104
6.3.2 压缩和解压缩命令 106
6.3.3 文件和目录权限管理命令 111
6.4 文件系统的挂载 113
6.4.1 使用命令行挂载文件系统 113
6.4.2 永久挂载文件系统 116
6.4.3 卸载文件系统 118
6.5 管理交换空间 118
6.6 磁盘配额 121
6.6.1 磁盘配额的作用 121
6.6.2 创建磁盘配额 122
第7章 逻辑卷管理 125
7.1 通用LVM概念和术语 125
7.1.1 LVM简介 125
7.1.2 LVM基本术语 126
7.2 建立LVM卷 127
7.2.1 创建分区 127
7.2.2 创建物理卷 128
7.2.3 创建卷组 128
7.2.4 创建逻辑卷 128
7.2.5 创建文件系统 129
7.2.6 挂载文件系统 129
7.3 管理LVM卷 130
7.3.1 卸载卷 130
7.3.2 查看卷信息 130
7.3.3 调整LVM卷 132
7.4 LVM高级应用 134
7.4.1 卷快照 134
7.4.2 移动卷 136
7.5 LVM图形化管理工具 138
7.5.1 管理物理卷 138
7.5.2 管理与配置逻辑卷 139
第8章 进程管理 142
8.1 什么是进程 142
8.1.1 进程的概念 142
8.1.2 进程的状态 142
8.1.3 进程的类型 143
8.2 进程管理 143
8.2.1 启动进程 143
8.2.2 管理进程 144
8.2.3 终止进程 148
8.2.4 桌面环境下管理进程 149
8.3 系统监视工具 150
8.3.1 桌面环境下监视系统 150
8.3.2 系统监视命令 151
8.4 计划任务 152
8.4.1 一次性计划任务——at调度 152
8.4.2 周期性计划任务——cron调度 153
第9章 软件管理 155
9.1 使用YUM 155
9.1.1 Linux下的可执行文件 155
9.1.2 传统管理软件的方法 156
9.1.3 RPM 156
9.1.4 YUM 157
9.2 安装RPM软件 164
9.2.1 RPM的介绍 164
9.2.2 RPM软件包文件 165
9.2.3 RPM命令 166
9.3 源代码安装 170
9.3.1 获得软件 170
9.3.2 编译前的准备工作 171
9.3.3 开始编译 173
9.3.4 安装与部署 174
9.4 软件包管理 175
9.4.1 启用软件包管理工具 175
9.4.2 查看软件 175
9.4.3 安装与卸载软件 177
第10章 服务的管理 178
10.1 管理服务 178
10.1.1 服务的介绍 178
10.1.2 服务的启动管理 179
10.2 服务的可用性 181
10.2.1 设置独立服务的开机启用 181
10.2.2 使用chkconfig管理服务启动 182
10.3 服务管理工具 183
10.3.1 ntsysv 183
10.3.2 服务设置 184
第3部分 Linux的网络配置
第11章 网络基础 188
11.1 网络配置基础 188
11.2 网络的基本配置 193
11.2.1 基本配置 193
11.2.2 高级配置 194
11.3 系统网络配置文件 195
11.4 网络设置工具 197
11.4.1 设置主机名称命令hostname 197
11.4.2 配置网络接口命令ifconfig 197
11.4.3 设置路由命令route 199
11.4.4 检查网络状况命令netstat 199
11.4.5 ping命令 201
11.4.6 nslookup命令 202
11.4.7 traceroute命令 203
第12章 访问网络文件共享服务 204
12.1 网络文件系统NFS 204
12.1.1 NFS服务简介 204
12.1.2 配置NFS服务 205
12.1.3 NFS服务配置实例 206
12.2 SMB/CIFS通用网络文件系统 207
12.2.1 Samba服务概述 207
12.2.2 配置Samba 208
12.2.3 创建Samba服务器 209
12.3 自动挂载网络存储服务 213
12.3.1 自动挂载(autofs)服务概述 213
12.3.2 配置autofs服务 213
12.3.3 autofs服务配置实例 215
第13章 管理常用网络服务 217
13.1 管理NTP服务 217
13.1.1 NTP服务简介 217
13.1.2 配置NTP服务 218
13.1.3 NTP的创建实例 219
13.2 管理CUPS打印服务 220
13.2.1 CUPS的介绍 220
13.2.2 CUPS的组件 221
13.2.3 管理CUPS服务 222
13.3 管理SSH服务 224
13.3.1 SSH服务简介 224
13.3.2 配置SSH服务 225
13.3.3 SSH的管理 226
13.4 管理VNC服务 228
13.4.1 VNC概述 228
13.4.2 配置VNC服务 229
13.3.3 VNC的创建实例 230
第14章 常用网络服务器配置 233
14.1 Web服务配置 233
14.1.1 Apache服务器 233
14.1.2 配置Apache服务器 234
14.1.3 创建Apache服务器 235
14.2 FTP服务配置 236
14.2.1 FTP服务器概述 236
14.2.2 配置vsftpd 237
14.2.3 创建FTP服务器 237
14.3 DNS服务配置 238
14.3.1 DNS介绍 238
14.3.2 DNS配置文件 239
14.3.3 创建DNS服务器 242
14.3.4 DNS测试命令 244
14.4 DHCP服务配置 245
14.4.1 DHCP服务器介绍 245
14.4.2 配置DHCP服务 245
14.4.3 创建DHCP服务器 247
14.5 Mail服务配置 248
14.5.1 SMTP服务器介绍 248
14.5.2 配置postfix服务 248
14.5.3 创建postfix服务器 250
第4部分 Linux的安全设置
第15章 Linux安全设置 254
15.1 文件的安全设置ACL 254
15.1.1 什么是ACL 254
15.1.2 配置使用ACL 255
15.1.3 ACL配置实例 255
15.1.4 文件系统的特殊权限:SUID/SGID/Sticky Bit 257
15.2 磁盘的安全加密 259
15.2.1 通过加密分区启用数据保密 259
15.2.2 使用图形工具加密分区 261
15.3 日志管理 263
15.3.1 日志系统概述 264
15.3.2 管理日志服务 265
15.3.3 日志的格式 267
15.3.4 集中式日志服务 267
第16章 LDAP网络用户配置 269
16.1 LDAP简介 269
16.1.1 LDAP的特性 269
16.1.2 常用名称解释 270
16.1.3 OpenLDAP介绍 270
16.2 建立LDAP域服务器 271
16.2.1 安装软件包 271
16.2.2 配置LDAP服务器 271
16.2.3 初始化LDAP数据库 272
16.2.4 启动LDAP服务 273
16.3 使用LDAP服务器进行网络身份认证 274
16.3.1 准备工作 274
16.3.2 加入LDAP域 275
16.4 网络挂载主目录 276
第17章 防火墙基本设置 278
17.1 Linux下防火墙的基本设置 278
17.1.1 Linux防火墙概述 278
17.1.2 iptables防火墙内核模块 280
17.1.3 iptables命令格式 281
17.2 主机防火墙 283
17.2.1 iptables防火墙的运行与管理 283
17.2.2 管理主机防火墙规则 285
17.2.3 常用的主机防火墙规则 286
17.2.4 使用图形界面管理主机防火墙规则 287
17.3 NAT网络地址转换 289
17.3.1 NAT简介 289
17.3.2 使用iptables配置源NAT 290
17.3.3 使用iptables配置目的NAT 291
第18章 管理SELinux 294
18.1 基本SELinux安全性概念 294
18.1.1 SELinux介绍 294
18.1.2 SELinux的优点 294
18.1.3 SELinux的词汇 295
18.1.4 SELinux初始化过程 296
18.2 SELinux模式 297
18.2.1 SELinux两种状态 297
18.2.2 查看SELinux的状态 298
18.2.3 改变SELinux的状态 298
18.2.4 手工修改SELinux模式 300
18.3 SELinux上下文 300
18.3.1 安全上下文的格式 300
18.3.2 查看对象的安全上下文 301
18.3.3 修改对象的安全上下文 301
18.3.4 安全上下文与程序控制 302
18.4 SELinux布尔值 303
18.4.1 查看SELinux布尔值 303
18.4.2 修改SELinux布尔值 304
18.4.3 SELinux布尔值访问实例 304
18.5 监控SELinux冲突 305
第5部分 Linux系统的故障排除
第19章 Linux引导过程与内核管理 310
19.1 引导过程 310
19.1.1 BIOS 310
19.1.2 启动加载程序 311
19.1.3 载入内核 311
19.1.4 执行init进程 312
19.1.5 初始化系统环境 312
19.1.6 建立用户接口 314
19.2 运行级别Runlevel 315
19.2.1 Runlevel 315
19.2.2 查看与切换Runlevel 317
19.2.3 管理init服务 317
19.3 GRUB的更改 319
19.3.1 关于GRUB的简介 319
19.3.2 使用GRUB 319
19.3.3 配置GRUB 321
19.4 内核管理 322
19.4.1 内核的版本 323
19.4.2 内核的组件 323
19.4.3 升级内核 324
19.5 内核模块管理 326
19.5.1 内核模块的位置 326
19.5.2 查看模块信息 327
19.5.3 查看已加载模块 328
19.5.4 自动加载模块 328
19.6 配置内核参数 329
19.6.1 /proc目录 329
19.6.2 使用sysctl修改内核参数 332
19.6.3 修改GRUB修改内核参数 333
第20章 系统恢复与故障排除 335
20.1 系统故障排除基础 335
20.1.1 故障排除的基本原则 335
20.1.2 故障排除的常用方法 336
20.1.3 故障排除的技巧 336
20.2 修复引导问题 337
20.2.1 系统的启动过程 337
20.2.2 单用户模式 338
20.3 救援模式 341
20.3.1 救援模式介绍 341
20.3.2 启动救援模式 341
20.3.3 切换硬盘环境 344




熟知概念

第1部分 Linux的基础知识

第1章 Linux概述

第2章 Linux系统的安装

KickStart开始自动安装 
PXE网络安装


  • PXE
    PXE,全称Pre-boot Execution Environment 预启动执行环境
    通过网络接口启动计算机,不依赖本地存储设备或本地已安装的操作系统
    C/S的工作模式
    由intel公司开发的最新技术
    PXE客户端会调用IP,UDP,DHCP,TFTP等网络协议
    PXE客户端其实是指网卡有PXE client,存放在网卡的ROM中,当服务器启动时候bios会把pxe client调到内存中执行
  • kickstart
    Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。

第3章 X Window图形用户界面和应用软件

第4章 Shell的基本应用

  • 常用Shell命令

    shell常用命令

    检查远程端口是否对bash开放:
    echo >/dev/tcp/8.8.8.8/53 && echo "open"
    让进程转入后台:
    Ctrl + z
    将进程转到前台:
    fg
    产生随机的十六进制数,其中n是字符数:
    openssl rand -hex n
    在当前shell里执行一个文件里的命令:
    source /home/user/file.name
    截取前5个字符:
    ${variable:0:5}
    SSH debug 模式:
    ssh -vvv user@ip_address
    SSH with pem key:
    ssh user@ip_address -i key.pem
    用wget抓取完整的网站目录结构,存放到本地目录中:
    wget -r --no-parent --reject "index.html" http://hostname/ -P /home/user/dirs
    一次创建多个目录:
    mkdir -p /home/user/{test,test1,test2}
    列出包括子进程的进程树:
    ps axwef
    创建 war 文件:
    jar -cvf name.war file
    测试硬盘写入速度:
    dd if=/dev/zero of=/tmp/output.img bs=8k count=256k; rm -rf /tmp/output.img
    测试硬盘读取速度:
    hdparm -Tt /dev/sda
    获取文本的md5 hash:
    echo -n "text" | md5sum
    检查xml格式:
    xmllint --noout file.xml
    将tar.gz提取到新目录里:
    tar zxvf package.tar.gz -C new_dir
    使用curl获取HTTP头信息:
    curl -I http://www.example.com
    修改文件或目录的时间戳(YYMMDDhhmm):
    touch -t 0712250000 file
    用wget命令执行ftp下载:
    wget -m ftp://username:password@hostname
    生成随机密码(例子里是16个字符长):
    LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;
    快速备份一个文件:
    cp some_file_name{,.bkp}
    访问Windows共享目录:
    smbclient -U "DOMAIN\user" //dc.domain.com/share/test/dir
    执行历史记录里的命令(这里是第100行):
    !100
    解压:
    unzip package_name.zip -d dir_name
    输入多行文字(CTRL + d 退出):
    cat > test.txt
    创建空文件或清空一个现有文件:
    > test.txt
    与Ubuntu NTP server同步时间:
    ntpdate ntp.ubuntu.com
    用netstat显示所有tcp4监听端口:
    netstat -lnt4 | awk '{print $4}' | cut -f2 -d: | grep -o '[0-9]
    '
    qcow2镜像文件转换:
    qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \precise-server-cloudimg-amd64-disk1.raw
    重复运行文件,显示其输出(缺省是2秒一次):
    watch ps -ef
    所有用户列表:
    getent passwd
    Mount root in read/write mode:
    mount -o remount,rw /
    挂载一个目录(这是不能使用链接的情况):
    mount --bind /source /destination
    动态更新DNS server:
    nsupdate < <EOF update add $HOST 86400 A $IP send EOF
    递归grep所有目录:
    grep -r "some_text" /path/to/dir
    列出前10个最大的文件:
    lsof / | awk '{ if($7 > 1048576) print $7/1048576 "MB "$9 }' | sort -n -u | tail
    显示剩余内存(MB):
    free -m | grep cache | awk '/[0-9]/{ print $4" MB" }'
    打开Vim并跳到文件末:
    vim + some_file_name
    Git 克隆指定分支(master):
    git clone git@github.com:name/app.git -b master
    Git 切换到其它分支(develop):
    git checkout develop
    Git 删除分支(myfeature):
    git branch -d myfeature
    Git 删除远程分支
    git push origin :branchName
    Git 将新分支推送到远程服务器:
    git push -u origin mynewfeature
    打印历史记录中最后一次cat命令:
    !cat:p
    运行历史记录里最后一次cat命令:
    !cat
    找出/home/user下所有空子目录:
    find /home/user -maxdepth 1 -type d -empty
    获取test.txt文件中第50-60行内容:
    < test.txt sed -n '50,60p'
    运行最后一个命令(如果最后一个命令是mkdir /root/test, 下面将会运行: sudo mkdir /root/test):
    sudo !!
    创建临时RAM文件系统 – ramdisk (先创建/tmpram目录):
    mount -t tmpfs tmpfs /tmpram -o size=512m
    Grep whole words:
    grep -w "name" test.txt
    在需要提升权限的情况下往一个文件里追加文本:
    echo "some text" | sudo tee -a /path/file
    列出所有kill signal参数:
    kill -l
    在bash历史记录里禁止记录最后一次会话:
    kill -9 $$
    扫描网络寻找开放的端口:
    nmap -p 8081 172.20.0.0/16
    设置git email:
    git config --global user.email "me@example.com"
    To sync with master if you have unpublished commits:
    git pull --rebase origin master
    将所有文件名中含有”txt”的文件移入/home/user目录:
    find -iname "txt" -exec mv -v {} /home/user ;
    将文件按行并列显示:
    paste test.txt test1.txt
    shell里的进度条:
    pv data.log
    使用netcat将数据发送到Graphite server:
    echo "hosts.sampleHost 10 date +%s" | nc 192.168.200.2 3000
    将tabs转换成空格:
    expand test.txt > test1.txt
    Skip bash history:
    < space >cmd
    去之前的工作目录:
    cd -
    拆分大体积的tar.gz文件(每个100MB),然后合并回去:
    split –b 100m /path/to/large/archive /path/to/output/files cat files* > archive
    使用curl获取HTTP status code:
    curl -sL -w "%{http_code}\n" www.example.com -o /dev/null
    设置root密码,强化MySQL安全安装:
    /usr/bin/mysql_secure_installation
    当Ctrl + c不好使时:
    Ctrl +
    获取文件owner:
    stat -c %U file.txt
    block设备列表:
    lsblk -f
    找出文件名结尾有空格的文件:
    find . -type f -exec egrep -l " +$" {} ;
    找出文件名有tab缩进符的文件
    find . -type f -exec egrep -l $'\t' {} ;
    用”=”打印出横线:全选复制放进笔记
    printf '%100s\n' | tr ' ' =

  • 通配符

* - 通配符,代表任意字符(0到多个)
? - 通配符,代表一个字符
# - 注释
/ - 跳转符号,将特殊字符或通配符还原成一般符号
| - 分隔两个管线命令的界定
; - 连续性命令的界定
~ - 用户的根目录
$ - 变量前需要加的变量值
! - 逻辑运算中的"非"(not)
/ - 路径分隔符号
>, >> - 输出导向,分别为"取代"与"累加"
' - 单引号,不具有变量置换功能
" - 双引号,具有变量置换功能
` - quote符号,两个``中间为可以先执行的指令
() - 中间为子shell的起始与结束
[] - 中间为字符组合
{} - 中间为命令区块组合
Ctrl+C - 终止当前命令
Ctrl+D - 输入结束(EOF),例如邮件结束的时候
Ctrl+M - 就是Enter
Ctrl+S - 暂停屏幕的输出
Ctrl+Q - 恢复屏幕的输出
Ctrl+U - 在提示符下,将整行命令删除
Ctrl+Z - 暂停当前命令
&& - 当前一个指令执行成功时,执行后一个指令
|| - 当前一个指令执行失败时,执行后一个指令

其中最常用的是*、?、[]和 ‘。下面举几个简单的例子:
1,ls test* <== *表示后面不论接几个字符都接受(没有字符也接受)
2,ls test? <== ?表示后面当且仅当接一个字符时才接受
3,ls test??? <== ???表示一定要接三个字符
4,cp test[1~5] /tmp <== test1, test2, test3, test4, test5若存在,则复制到/tmp目录下
5,cd /lib/modules/' uname -r'/kernel/drivers <== 被 ' ' 括起来的命令先执行

  • 正则表达式
    正则表达式元字符、元符号分类列表
    我们在下面的表格中列出了JavaScript支持的元字符和元符号。

  • 表1:特殊字符
    元字符 含义
    \0 匹配null字符,对应的十六进制值为\x00
    \b 匹配退格字符,对应的十六进制值为\x08
    \n 匹配换行字符,对应的十六进制值为\x0A
    \r 匹配回车字符,对应的十六进制值为\x0D
    \f 匹配换页字符,对应的十六进制值为\x0C
    \t 匹配制表(TAB)字符,同时对应于水平制表符\x09和垂直制表符\x0B
    \xhh 匹配用2个十六进制数字表示的字符
    \uhhhh 匹配用4个十六进制在数字表示的字符,这些字符是Unicode字符
    \cchar 匹配命名的控制字符
    提示:特殊字符是指那些不容易进行直接书面表达或不容易直接使用键盘输入的字符。

  • 表2:字符类
    元字符或元符号 含义
    [...] 匹配列表中给出的任何字符。该列表可以是一个字符,也可以是多个字符,还可以是使用“-”表示的字符范围。例如[a]表示匹配单个字母a,[ab]表示匹配字母a或字母b,[a-z]表示匹配任何一个小写字母,[0-9]表示匹配任何单个的数字,[a-z0-9]表示匹配任何单个的小写字母或数字,等等
    [^...] 匹配列表中没有给出的任何单个字符。该元字符与[...]的意义刚好相反。例如:[a]表示匹配任何不是字母a的字符,[ab]表示任何不是字母a或字母b的字符,[^a-z]表示任何不是小写字母的任何字符,等等
    . 匹配除了回车和换行符之外的任何字符
    \w 元符号,相当于[a-zA-Z0-9_],匹配任何字母、数字、下划线字符,这样的字符也称为单词字符
    \W 元符号,相当于[^a-zA-Z0-9_],匹配除了字母、数字、下划线字符之外的任何字符
    \d 元符号,相当于[0-9],匹配任何单个的数字字符
    \D 元符号,相当于[^0-9],匹配除了数字之外的任何单个字符
    \s 元符号,匹配空白字符,空白字符是指空格、Tab字符和回车换行符
    \S 元字符,匹配任何非空白字符

  • 表3:定位元字符
    元字符 含义
    ^ 匹配字符串的开始位置,或多行匹配模式中(\m)每一行的开始位置
    $ 匹配字符串的结束位置,或多行匹配模式下(\m)每一行的结束位置
    \b 匹配单词边界。这个元字符用于单词匹配。单词边界有4种形式:
    1、当字符串第一个字符是单词字符时,位于第一个字符前面;
    2、当字符串最后一个字符是单词字符时,位于最后一个字符后面;
    3、在单词字符和非单词字符之间,紧跟在单词字符后面;
    4、在非单词字符和单词字符之间,紧跟在非单词字符后面
    \B 匹配非单词边界,这个元字符匹配\b不匹配的每一个位置
    x(?=y) 正向前查匹配。也就是说,只有在x后面跟上y时,才匹配x成功。例如:使用正则表达式/Hello(?=World)/进行匹配时,只有Hello后面跟着World时匹配才算成功,所以,这个正则表达式匹配HelloWorld,但是不匹配Hello,也不匹配Hello123
    x(?!y) 反向前查匹配。只有在x后面不跟着y时,才匹配x成功。例如:在使用正则表达式/Hello(?!World)/进行匹配时,只有Hello后面不跟着World时才匹配成功。所以这个正则表达式匹配Hello,也匹配Hello123(同时也匹配里面的Hello),但是不匹配HelloWorld

  • 表4:模式修饰符
    元字符 含义
    g 进行全局匹配
    m 多行匹配
    i 不区分大小写匹配

  • 表5:限定符
    元字符 含义
    x? 匹配0个或1个x。例如:/ab?/匹配a、ab、ac、abc,但是不匹配bc
    x+ 匹配1个或多个x。例如:/ab+/匹配ab、abb、abbbc,但是不匹配a、ac
    x* 匹配0个或多个x。例如:/ab*/匹配a、ab、abb、abbbc,但是不匹配bc
    x{n} 匹配n个x。例如:/a{3}/匹配aaa、aaac,但是不匹配aa、a、abc
    x{n,} 匹配n个或多个x。例如:/a{3,}/匹配aaa、aaaa,但是不匹配aa、a、abc
    x{n,m} 匹配n到m个x。例如:/a[2,4]/匹配aa、aaa、aaaa,但是不匹配a、aaaaa

  • 贪婪匹配原则
    在JavaScript中,正则表达式进行匹配时默认使用的是贪婪匹配原则,即尽可能多的匹配字符串。例如,使用正则表达式/1{3,4}/来匹配字符串1111111,得到的结果为:1111和111。即先匹配4个字符,然后才匹配3个字符。

  • 表6:分组和替换元字符
    元字符 含义
    x|y 匹配x或y,例如:/cat|dog/匹配cat或dog
    (sub) 反向引用,将子表达式sub作为一个整体处理,括号的作用相当于代数中括号的作用。并将捕获的子匹配保存在\1,\2,......和$1,$2,......中。例如:/a(bc)+/中,加号元字符作用在子表达式bc上,它匹配abc、abcbc,但是不匹配a和ac
    (?:sub) 分组子模式,但是不捕获子模式。它的作用与(sub)类似,称为无记忆匹配
    \1,\2,\3,... 在正则表达式中,分别包含与正则表达式中第一个反向引用、第二个反向引用、第三个反向引用...相匹配的子串
    $1,$2,$3,... 在替换中,分别包含与正则表达式中第一个反向引用、第二个反向引用。第三个反向引用...相匹配的子串

vim
全局:/etc/vimrc
用户个人:~/.vimrc
1、行号
显示:set nu
取消显示:set nomber, set nonu
2、括号匹配高亮
匹配:set showmatch, set sm
取消:set nosm
3、自动缩进
启用:set ai
禁用:set noai
4、高亮搜索
启用:set hlsearch
禁用:set nohlsearch
5、语法高亮
启用:syntax on
禁用:syntax off
6、忽略字符大小写
启用:set ic
禁用:set noic
7、设置tab键缩进4个空格
set tabstop=4

image.png
image.png

第2部分 Linux的系统管理

第5章 用户和组管理

在Linux中用户和组被称为安全权限模型的核心要素,本文主要是讲解一些用户和组管理的命令,其中的命令包括useradd、userdel、usemod、chfn、chsh、chage、passwd、groupadd、groupmod、groupdel、gpasswd、su,本文只要说的是一些常用的选项,如果需要别的选项,请获取命令帮助
Linux中用户类别分为:管理员用户和普通用户,其中管理员用户的UID为0,普通用户的UID为1-65535,
普通用户又分为系统用户和登陆用户,其中系统用户的UID为1-499,登陆用户的UID为500-65535,
创建用户
useradd等同于adduser,格式为useradd [options] UserName
其中常用选项包括以下几个:
-u UID:指定用户的UID,如果不指定的话,就在最后一个用户的基础上+1,useradd创建的第一个账号的UID为500;
-g GID:指定用户的GID,即用户的基本组ID,但是GID要实现存在才可以,也可以直接使用组名
-G GID:指定用户的额外组,当时GID要实现存在才可以,也可以直接使用组名
-d 目录:指定用户的家目录,这个家目录最好是不要存在的文件夹,如果目录已经存在,会出现shell环境变量错误
-c 备注:为用户添加备注信息
-s shell:指定用户的默认shell,应该指定使用/etc/shells文件中出现的shell类型
-m:创建用户时,强制给用户创建家目录,默认情况下会在/home目录下创建一个跟用户名同名的文件夹来作为用户的家目录
-M:创建用户时,不创建用户家目录
删除用户
userdel:用于删除用户,默认情况下会保留用户的家目录,如果想连家目录一起删除的话,应该使用-r选项
格式为 userdel [options] UserName
修改用户的属性信息
chsh:修改用户的默认shell
chfn:修改用户的备注信息,会依次输入用户的名称、办公地址、办公电话、家庭电话
usermod:修改用户的属性信息
格式为 usermod [options] UserName
-a :追加
-u UID:修改用户的UID
-g GID:修改用户基本组的GID,也可以直接使用基本组的组名
-G GID:修改用户的额外组的GID,也可以直接使用基本组的组名,默认状态下会覆盖原有的附加组,如果想要添加附加组,请在该选项前加-a选项
-c string:修改用户的备注信息
-d 目录:默认不会迁移用户的家目录,如果要迁移,请以-m选项一起使用
-s shell:修改用户的默认shell ,应该指定使用/etc/shells文件中出现的shell类型
-l 名称:修改用户的登陆名称,但是不修改用的UID,GID
-e 时间:修改用户的过期时间
-f 时间:修改用户的非活动时间。
-L 用户名:锁定用户账号
-U 用户名:将锁定的用户账号进行解锁
chage:修改用户的日期属性
-E:距离1970-1-1号的时间天数,过了这个时间,账号不可访问
-I: 设置非活动期限
-m:修改密码最小使用时间
-M:修改密码最长使用时间
-W:修改密码警告时间
查看用户的相关信息
id 查看用户的id号
格式:id [options] UserName
-n:只显示名称
-u:只显示用户的UID
-g:显示用户的基本在GID
-G:显示用户的额外组的GID
修改用户密码
密码安全性策略:
1、足够复杂
2、足够长、尽量交叉使用数字、大写字母、小写字母和特殊字符
3、尽量避免使用易猜测的密码:
4、定期更换
passwd 修改用户的密码
格式:passwd [options] 用户名
说明:普通用户只能修改自身的密码,管理员可以设定自身和所有普通用户的密码,在设定其他用户密码是直接使用passwd 用户名即可
-l:锁定用户
-u:解锁用户
-n:设定用户密码的最少使用时间
-x:设定用户密码的最长使用时间
-w:设定用户密码的警告时间
-i:设定用户密码的非活动时间
/etc/passwd中的格式
用户名:密码占位符:UID:GID(基本组ID):用户备注信息(多个以,隔开):家目录:默认shell
/etc/shadow中的格式
用户名:密码:最近的一次密码修改时间距离1970-1-1的时间:最短使用期限:最长使用期限:警告时间:非活动时间(登陆就要修改密码):账号的过期期限:预留段
组的管理:
用户组分为普通组和管理员组,在用户看来,组可以分为两类:基本组和额外组,额外组也叫附加组,组的管理和用户的管理基本类似,这里就不再做累赘

第6章 磁盘与文件系统管理

磁盘的识别与分区
建立和管理文件系统 
文件系统的挂载


一. 磁盘基本知识和分区
1)设备类型如下
块设备:block,存取单位“块”,例如磁盘设备
字符设备:char,存取单位“字符”,例如键盘

2)设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信,也就是可以进行数据的输入输出设备号码,用来在内核中进行标记,设备只有数据属性(元数据),没有数据内容
主设备号:major number, 标识设备类型
次设备号:minor number, 标识同一类型下的不同设备
硬盘接口类型:
并行:数据传输由多根线完成,可能有电磁干扰
IDE:133MB/s
SCSI:640MB/s

3) 分区管理工具:fdisk, parted, sfdisk
fdisk:对于一块硬盘来讲,最多只能管理15分区;
做完分区后,查看内核是否已经识别新的分区:
# cat /proc/partations

二. Linux文件系统管理:
1) Linux文件系统: ext2, ext3, ext4(centos6中比较常见), xfs, btrfs, reiserfs, jfs, swap
swap: 交换分区
光盘:iso9660
Windows:fat32, ntfs
Unix: FFS, UFS, JFS2
网络文件系统:NFS, CIFS
集群文件系统:GFS2(红帽的), OCFS2(oracle的)
分布式文件系统:ceph, moosefs, mogilefs, GlusterFS, Lustre

   根据其是否支持"journal"功能:
     日志型文件系统: ext3, ext4, xfs, ...
      非日志型文件系统: ext2, vfat

  文件系统的组成部分:
     内核中的模块:ext4, xfs, vfat
     用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat

Linux的虚拟文件系统:VFS------linux系统上可同时使用多种文件系统类型,最终都统一成VFS来进行管理,使用cat /proc/filesystems来查看系统支持的文件系统类型,lsmod能查看已装载的模块

2)创建文件系统(格式化):
mkfs命令:
(1) # mkfs.FS_TYPE /dev/DEVICE, 例如 mkfs.ext4 /dev/sda5, 使用blkid /dev/sda5可以显示该分区的基本信息
ext4
xfs
btrfs
vfat
(2) # mkfs -t FS_TYPE /dev/DEVICE, 和(1)等效

3) mkswap:创建交换分区

4) 其它常用工具:
blkid:块设备属性信息查看
dumpe2fs: -h:查看超级块信息
dumpe2fs /dev/sda5 会详细的显示文件系统信息,或者说是布局信息,比如分组情况,块信息,inode位置等

5) 文件系统检测(常用于异常关机导致文件系统出错的情况):
fsck: File System Check
fsck.FS_TYPE,例如/dev/sda5的文件类型是ext2,那么检测命令为: fsck.ext2 /dev/sda5

三. 挂载命令
将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;
根文件系统(rootfs): /etc/, /bin, /sbin, /lib, /lib64, /proc(内核输出文件), /sys, /dev等, 这些目录文件所在的分区就是根文件系统,这些文件都不能单独分区。

注意:挂载点下原有文件在挂载完成后会被临时隐藏,卸载后可见,所以挂载最好用空目录;

  1. 挂载方法:mount DEVICE MOUNT_POINT
    mount:不加任何参数,(通过查看/etc/mtab文件)显示当前系统已挂载的所有设备
    mount [-fnrsvw] [-t vfstype] [-o options] device dir
    dir:挂载点
    事先存在;建议使用空目录;
    进程正在使用中的设备无法被卸载,可以使用-f参数强制卸载;
    例如:mount -r -L 'MYDATA' /mydata #/dev/sda5的标签是MYDATA,这里只读,用标签来挂载
    注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts
    -o options:(挂载文件系统的附加选项)
    例如:原先mount /dev/sda3 /mydata,不用卸载,直接mount -o remount,rw /dev/sda3 (/mydata)
    注意:上述选项可多个同时使用,彼此使用逗号分隔;
    默认挂载选项:defaults,相当于rw, suid, dev, exec, auto, nouser, and async

2)卸载命令:
# umount DEVICE
# umount MOUNT_POINT
查看正在访问指定文件系统的进程:
# fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程:(只有管理员能执行,此命令用于不能正常卸载挂载的情况)
# fuser -km MOUNT_POINT

3)挂载交换分区:
启用:swapon (前提是创建挂载分区,例如mkswap /dev/sda6, 然后 swapon /dev/sda6)
禁用:swapoff [OPTION]... [DEVICE]

四. 文件挂载的配置文件:/etc/fstab, 实现开机自动挂载文件系统
每行定义一个要挂载的文件系统,各字段含义如下:
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储(就是备份)频率 自检次序

五. 文件系统上的其它概念:

  1. Inode: Index Node, 索引节点-----用来存储文件属性,比如大小,文件类型,文件数据block位置等元数据,但是不包括文件名

理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

使用mke2fs可以设定inode
-N #:为数据空间创建个多少个inode;
-m #: 为管理人员预留的空间占据的百分比;
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性
例如:
mke2fs -b1024 -m 3 -L MYDATA /dev/sda5

  1. 链接文件:
    硬链接:
    不能够对目录进行;
    不能跨分区进行;
    指向同一个inode的多个不同路径;创建文件的硬链接即为为inode创建新的引用路径,因此会增加其引用计数;

    符号链接:相当于一个快捷方式
    可以对目录进行;
    可以跨分区;
    指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

六. 一些相关的常用命令

1) 内存空间使用状态:
free [OPTION]
-m: 以MB为单位
-g: 以GB为单位

2) 文件系统空间占用等信息的查看工具:
df:
-h: human-readable
-i:inodes instead of blocks
-P: 以Posix兼容的格式输出; (有时候挂载点文件名太长的话,会以2行显示,使用-P就会强制一行显示)

3) 查看某目录总体空间占用状态:
du:
du [OPTION]... DIR
-h: human-readable
-s: summary
比如看一个文件夹多大 du -sh /usr

  • 命令总结:mount, umount, free, df, du, swapon, swapoff, fuser
    fuser功能
    fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.
    显示使用某个文件的进程信息
    $ fuser -um /dev/sda2

管理交换空间

linux swap交换空间
linux内存通过 virtual memory 虚拟内存来管理整个内存, 虚拟内存管理着物理内存,也管理着swap交换空间。

swap的使用场景

swap主要有两个用处

1、当系统需要比物理内存更多的内存空间的时候,内核会把内存里边用得比较少的内存页面swap out到交换分区,以空出物理内存给当前应用来快速运行。

2、某些应用启动的时候初始化但是随后的应用运行期间不再使用的内存页面,系统会把这部分页面也swap out到交换空间,以留出物理内存页面给其他应用或者磁盘缓存。

linux的这种内存管理策略主要用来节约物理内存,提升当前应用的执行速度。但是swap不能当做扩充内存的一个手段,因为swap读写属于磁盘io,要比物理内存的io慢得多。

如果系统频繁的swap out内存页面到交换分区,随后又swap in交换分区到内存页面,这说明系统在寻找空闲内存来是多个应用同时运行,也就是说当前系统任务比较繁忙,但是可用内存又不足了,这时候唯一的办法只能通过提高物理内存来解决。

因此衡量一个系统内存用量是否到了瓶颈,就可以通过观察swap用量和si so的频率来评估。

生成swap

swap空间有两种形式:一是交换分区,二是交换文件。总之对它的读写都是磁盘操作。

1、交换分区

交换分区可以在安装操作系统的时候分配,也可以进入系统后用fdisk来划分一个交换分区

比如在磁盘上划分一个/dev/sda5分区,然后标记为交换分区。

然后使用mkswap命令在该分区上面建立交换分区文件系统:

mkswap /dev/sda5

最后激活交换分区:

swapon /dev/sda5

2、交换文件

交换空间也可以是文件,只需要用dd命令在磁盘上建立分配了大小的文件/home/swapfile

建立交换分区文件系统

mkswap /home/swapfile

最后激活它

swapon /home/swapfile

swap空间大小的分配策略

swap空间大小的分配众说纷纭,有说物理内存两倍的,有说物理内存一样大小的,也有说物理内存一半的。在不同场景下,这些说法应该都是对的。(因此拿一个绝对说法当面试题的,考官可能也不真正的懂swap)

下面是红帽系的分配策略:

Swap should equal 2x physical RAM for up to 2 GB of physical RAM, and then an additional 1x physical RAM for any amount above 2 GB, but never less than 32 MB.

So, if:

M = Amount of RAM in GB, and S = Amount of swap in GB, then

<pre class="screen" style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word;">If M < 2
S = M *2
Else
S = M + 2

居然有个if else的伪代码来计算swap
所以怎么分,还得看具体应用场景,只要不离谱,都是正确的。

swap优化

linux内2.6增加一个新参数来管理swap,叫做swappiness ,Swappiness 可以有 0 到 100 的值。设置这个参数为较低的值会减少内存的交换,从而提升一些系统上的响应度。

值越高,内存页面越多的swap out到交换空间,值越低,越多的应用使用物理内存空间。因此要想最大限度的使用物理内存,应该尽量减小swappiness的值甚至设置为0。

linux默认设置为60,临时修改它的值:
echo 10 > /proc/sys/vm/swappiness
要永久修改可以在/etc/sysctl.conf文件修改vm.swappiness参数


磁盘配额 (quota)
一,磁盘管理的概念:
Linux系统是多用户任务操作系统,在使用系统时,会出现多用户共同使用一个磁盘的情况,如果其中少数几个用户占用了大量的磁盘空间,势必压缩其他用户的磁盘的空间和使用权限。因此,系统管理员应该适当的开放磁盘的权限给用户,以妥善分配系统资源。

二,什么是磁盘配额:
磁盘配额是一种磁盘空间的管理机制,使用磁盘配额可限制用户或组在某个特定文件系统中所能使用的最大空间。

三,磁盘配额的步骤:
1,创建要磁盘配额的用户(add)
修改内核fstab,对根目录开启磁盘配额限制


image.png

2,执行quotacheck命令,创建aquota.user文件
输入命令quotacheck -avgu
3,执行edquota命令,设置用户的配额
4,启动配额管理
输入quotaon -avgu:启动磁盘配额
5,查看用户的磁盘配额
quota username

第7章 逻辑卷管理

1.什么是LVM

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

LVM(逻辑分区)的创建顺序:物理分区-物理卷-卷组-逻辑卷-挂载。


20160803164634261.jpg

物理卷(Physical Volume,PV):就是指硬盘分区,也可以是整个硬盘或已创建的软RAID,是LVM的基本存储设备。

卷组(Volume Group,VG):是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。

逻辑卷(Logical Volume,LV):他是Linux环境下对磁盘分区进行管理的一种机制。当逻辑分区放不下某些文件时,又不能夸分区来存放,逻辑卷可以在不停机的情况下方便调整各分区的大小。


第8章 进程管理

管理进程

●查看所有运行中的进程
●查看进程消耗资源
●定位个别进程并且对其执行指定操作
●改变进程的优先级
●杀死指定进程
●限制进程可用的系统资源等
介绍Linux进程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

1 pstree

linux中,每一个进程都是由其父进程创建的,显示进程的树状图来展示进程间关系

2 ps

是Linux 中最基础的浏览系统中的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等。
ps -a - 列出所有运行中/激活进程
ps -ef |grep - 列出需要进程
ps -aux 显示进程信息

3 top

‘top’是一个更加有用的命令,可以监视系统中不同的进程所使用的资源。它提供实时的系统状态信息。显示进程的数据包括PID、进程属主、优先级、%CPU、%memory等。可以使用这些显示指示出资源使用量。

4.htop

htop与top很类似,但是htop是交互式的文本模式的进程查看器。它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。使用上下光标键选择进程,F7和F8改变优先级,F9杀死进程。Htop不是系统默认安装的,所以需要额外安装。

5.nice

通过nice命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。默认情况下,进程以0的优先级启动。进程优先级可以通过top命令显示的NI(nice value)列查看。
进程优先级值的范围从-20到19。值越低,优先级越高。
nice <优先值> <进程名> - 通过给定的优先值启动一个程序

6.renice

renice命令类似nice命令。使用这个命令可以改变正在运行的进程优先值。注意,用户只能改变属于他们自己的进程的优先值。
renice -n -p - 改变指定进程的优先值

7.kill

这个命令用于发送信号来结束进程。如果一个进程没有响应杀死命令,这也许就需要强制杀死,使用-9参数来执行。
killall -9 - 杀死所有拥有同样名字的进程

8.ulimit

该命令用于控制系统资源在shell和进程上的分配量。对于系统管理员是最有用的,可以管理重度使用和存在性能问题的系统。限制资源大小可以确保重要进程持续运行,其他进程不会占用过多资源。
ulimit -a - 显示当前用户关联的资源限制

9.w

w 提供当前登录的用户及其正在执行的进程的信息。显示信息头包含信息,如当前时间、系统运行时长、登录用户总数、过去的1,5,15分钟内的负载均衡数。

10.pgrep

pgrep的意思是"进程号全局正则匹配输出"。该命令扫描当前运行进程,然后按照命令匹配条件列出匹配结果到标准输出。对于通过名字检索进程号是很有用。
pgrep -u mint sh
这个命令将会显示用户为‘mint’和进程名为‘sh’的进程ID。

11.fg , bg

有时,命令需要很长的时间才能执行完成。对于这种情况,我们使用‘bg’命令可以将任务放在后台执行,而用‘fg’可以调到前台来使用。

12 pidof

用于查找指定名称的进程的进程号id号。

13 free 内存使用情况

free 命令显示了系统的可用和已用的物理内存及交换内存的总量,以及内核用到的缓存空间。

14. iostat - CPU 平均负载和磁盘活动

iostat 命令用于汇报 CPU 的使用情况,以及设备、分区和网络文件系统(NFS)的 IO 统计信息。

15. sar - 监控、收集和汇报系统活动

sar 命令用于收集、汇报和保存系统活动信息。要查看网络统计,

16. mpstat - 监控多处理器的使用情况

mpstat 命令显示每个可用处理器的使用情况,编号从 0 开始

17. pmap - 监控进程的内存使用情况

pmap 命令用以显示进程的内存映射,使用此命令可以查找内存瓶颈。

18. iotop - I/O 监控

iotop 命令利用 Linux 内核监控 I/O 使用情况,它按进程或线程的顺序显示 I/O 使用情况。

19. glances - 密切关注 Linux 系统

glances 是一款开源的跨平台监控工具。它在小小的屏幕上提供了大量的信息,还可以工作于客户端-服务器模式下。

20 /proc 文件系统 - 各种内核信息

/proc 文件系统提供了不同硬件设备和 Linux 内核的详细信息。更多详细信息,请参阅 Linux 内核 /proc 文档。常见的 /proc 例子:

# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts</pre>

系统监视工具
每个系统管理员都要知道的 30 个 Linux 系统监控工具

计划任务

计划任务:在某个时段自动执行某个任务。
Linux 系统中有两条指令用于设置计划任务,at、cron

at计划任务:只执行一次,然后就没有然后了

[root@localhost ~]# date  #查询当前系统时间 
Tue Aug 23 23:34:26 CST 2016 
[root@localhost ~]# at 23:36  #设置计划任务,在23:36分执行 
at> mkdir /root/1607  #输入要执行的命令 
at> <EOT> #输入ctrl+d退出 
job 6 at Tue Aug 23 23:36:00 2016 
[root@localhost ~]# at –l #查看当前的计划任务(执行一次的) 
[root@localhost ~]# atq #同上 
[root@localhost ~]# at 20:00 2017-10-1 #计划任务的特殊格式(在未来的某一天) 
[root@localhost ~]# at now +10min #计划任务的特殊格式(在10min后)

对于系统来说 :计划任务 就是在某个特定的时刻 执行一个脚本文件
创建成功的at计划任务会在/var/spool/at/目录下成生一个可执行的脚本文件
/var/spool/at/*
每一个脚本都对应一个at计划任务
删除at计划任务:
atrm 命令
atrm + 计划任务的编号


cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。

crond是cron执行计划任务的服务,crond命令会定期检查是否有要执行的工作,如果有,便会自动执行该工作。
linux任务调度的工作主要分为以下两类:
*系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存. 例如/tmp 临时目录
*个人执行的工作:某个用户定期要做的工作,由每个用户自行设置。
systemctl status crond #查询服务状态

crontab的参数:
crontab -u #指定某个用户的cron服务;
crontab -l #列出cron服务的详细内容;
crontab -r #删除cron服务;
crontab -e #编辑cron服务;
crontab -u root -l # root查看自己的cron计划任务:
crontab -u san -r # root想删除san的cron计划任务:
**cron文件语法:
分 小时 日 月 星期 命令
crontab -u root -e

    1. 每天晚上21:30 重启apache
      30 21 * * * /etc/init.d/httpd restart
    1. 每月1、10、22日的4 : 45重启apache。
      45 4 1,10,22 * * /etc/init.d/httpd restart
    1. 每月1到10日的4 : 45重启apache。
      45 4 1-10 * * /etc/init.d/httpd restart
    1. 周一到周五每天晚上 21:15 寄一封信给 root@xuegod63:
      15 21 * * 1-5 mail -s "hi" root@localhost < /etc/fstab

第9章 软件管理

YUM
源代码安装
软件包管理

第10章 服务的管理

管理服务
服务的可用性
服务管理工具

第3部分 Linux的网络配置

第11章 网络基础

第12章 访问网络文件共享服务

网络文件系统NFS 
SMB/CIFS通用网络文件系统 
自动挂载网络存储服务 自动挂载(autofs)

第13章 管理常用网络服务

管理NTP服务
管理CUPS打印服务 
管理SSH服务 
管理VNC服务

第14章 常用网络服务器配置

Web服务配置
FTP服务配置 
DNS服务配置
DHCP服务配置 
Mail服务配置

第4部分 Linux的安全设置

第15章 Linux安全设置

文件的安全设置ACL 
文件系统的特殊权限:SUID/SGID/Sticky Bit 
磁盘的安全加密 
日志管理

第16章 LDAP网络用户配置

第17章 防火墙基本设置

iptables

第18章 管理SELinux

第5部分 Linux系统的故障排除

第19章 Linux引导过程与内核管理

引导过程
运行级别Runlevel
GRUB的更改
内核管理
内核模块管理
配置内核参数

第20章 系统恢复与故障排除

系统故障排除基础
修复引导问题 
救援模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容