admin 管理员组文章数量: 887021
Linux基础学习√
- 1、centos6和7的变化
- 1.1.文件系统
- 1.2.防火墙、内核版本、默认数据库
- 1.3.时间同步,修改时区,修改语言
- 1.4.主机名
- 1.5.网络服务管理
- 1.6.网络设置
- 2、linux基础
- 3、目录命令和文件命令
- 3.1、 目录操作命令
- 3.1.1.ls:显示目录下的内容
- 3.1.2.cd:切换所在目录
- 3.1.3.pwd:查询当前所在目录
- 3.1.4.mkdir:创建空目录
- 3.2、文件操作命令
- 3.2.1.touch:创建新文件、修改文件时间值
- 3.2.2.stat:查看文件详细信息
- 3.2.3.cat:查看文件内容
- 3.2.4.more:分屏显示文件
- 3.2.5.less:分行显示文件
- 3.2.6.head:显示文件开头,默认10行
- 3.2.7.tail:显示文件结尾,默认10行
- 3.2. 8.ln:建立快捷方式
- 3.3、目录和文件都能操作的命令
- 3.3.1.rm:删除文件、目录等
- 3.3.2.cp:复制文件、目录
- 3.3.3.mv:剪切文件、目录
- 4、权限命令和帮助命令
- 4.1.权限命令
- 4.1.1.chmod:修改文件或目录的权限
- 4.1.2.chown:修改文件或目录的属主和属组
- 4.1.3.umask:权限掩码
- 4.1.4.getfacl:查看文件或目录的ACL
- 4.15、setfacl:设置文件ACL规则
- 4.2、帮助命令
- 4.2.1、man:显示联机帮助手册
- 4.2.2、info:一套完整的说明资料
- 4.2.3、--help:查看帮助
- 5、搜索命令和别名命令
- 5.1、whereis
- 5.2、which:查找并显示给定命令的绝对路径
- 5.3、locate:根据一个数据库搜索文件
- 5.4、find:在指定目录中搜索文件
- 5.4.1 按照文件名搜索
- 5.4.2 按照文件大小搜索
- 5.4.3 按照修改时间搜索
- 5.4.4 按照权限搜索
- 5.4.5 按照文件类型搜索
- 5.4.6 逻辑运算符
- 5.4.7 -exec:调用外部命令
- 5.5、grep:搜索文件中的内容
- 5.6、:将上一个命令的输出作为下一个命令的输入(管道符)
- 5.7、alias:别名
- 6、压缩命令和关机重启
- 6.1、zip:压缩文件或目录
- 6.2、uzip:解压缩文件
- 6.3、tar:打包与解除打包
- 6.4、sync:强制将内存缓冲区中的数据立即写入磁盘中(一般不需要用)
- 6.5、shutdown:关机和重启
- 6.6、reboot:重启系统
- 7、网络命令和系统痕迹
- 7.1、配置IP地址
- 7.2、ifconfig:查看本机的IP信息
- 7.3、ping:**测试网络连接**
- 7.4、netstat:网络状态查看
- 7.5、mail:发送和接收电子邮件
- 7.6、w:显示系统中正在登陆的用户信息
- 7.7、last:查看系统所有登陆过的用户信息
- 7.8、lastb:查看错误登陆的信息
- 7.9、ethtool:查看网卡信息
- 7.10、lspci:查看网卡型号
- 7.11、iftop:查看实时网络流量
- 7.12、sar:统计各种信息(包括网卡流量、cpu使用率)
- 8、挂载命令
- 8.1、mount:文件系统挂载
- 8.1.1、光盘挂载
- 8.1.2、挂载U盘
- 8.1.3、挂载NTFS分区
- 8.2、开机自动挂载
- 9、vim编辑器
- 9.1、vim的三种工作模式
- 9.2、vim使用技巧
- 9.2.1.分屏编辑
- 9.2.2.windows中编写的脚本转换成linux
- 9.2.3.设置tab键缩进4字符
- 9.2.4.vim中的正则、扩展正则
- 10、rpm软件包安装
- 10.1、默认安装位置
- 10.2、RPM 包安装
- 10.3、服务的启动与停止
- 10.4、rpm 包升级
- 10.5、rpm 包卸载(也要先卸载依赖包)
- 10.6、rpm 包查询
- 11、yum在线安装软件
- 11.1、yum 配置文件
- 11.2、搭建本地光盘yum源
- 11.3、yum 常用命令
- 11.4、yum组管理命令
- 11.5、搭建阿里云yum源
- 12、源码包安装软件
- 12.1、源码安装apache(示例)
- 12.2、删除源码安装的软件
- 12.3、打补丁(了解有这个东西即可)
- 12.3.1.生成补丁(用旧文件对比新文件再重定向输出就是补丁文件)
- 12.3.2.打入补丁
- 12.4、脚本安装软件包(不常见)
- 12.4.1.用webmin管理linux
- 13、用户管理
- 13.1、用户信息文件/etc/passwd
- 13.2、影子文件 /etc/shadow (存放密码)
- 13.3、组信息文件 /etc/group
- 13.4、添加、删除用户
- 13.5、设置用户密码
- 13.6、用户信息修改
- 13.7、切换用户身份
- 13.8、添加、删除用户组
- 13.9、把用户添加进组或从组中删除
- 14、权限管理
- 14. 1、查询、设置ACL 权限
- 14.2、sudo:给普通用户赋予部分管理员权限
- 14.3、文件的特殊权限(了解即可)
- 14.3.1.SetUID:用户执行这个文件时将以文件属主的身份执行
- 14.3.2.SetGID:用户执行这个文件时将以文件属组的身份执行
- 14.3.3.Sticky BIT:使普通用户不能删除其他用户建立的文件
- 14.4、chattr:更改文件属性(不常用)
- 14.5、lsattr:查看文件隐藏属性
- 15、磁盘管理
- 15.1、df:显示磁盘空间使用情况
- 15.2、du:查看占用空间
- 15.3、判断文件、命令类型
- 15.4、lsblk:查看系统的磁盘
- 15.5、blkid:显示UUID
- 15.6、基本磁盘管理
- 15.7、LVM:逻辑卷管理(重点)
- 15.8、LVM扩容、缩小、删除
- 15.9、LVM快照卷
- 15.10、扩容交换分区swap(相当于增加windows虚拟内存)
- 16、服务管理(centos 7)
- 16.1、systemctl:系统服务管理器指令
- 16.2、systemd-anlyzer:服务链接
- 16.3、hostnamectl:主机名管理
- 16.4、localectl:本地信息管理(字符集管理)
- 16.5、timedatectl:时间信息管理
- 16.6、loginctl:会话信息管理
- 17、磁盘配额
- 17.1、 磁盘配额
- 17.2、其他命令:
- 18、CentOS 7网卡改名
- 18.1.CentOS 7网卡改名
- 18.2.CentOS 7新增网卡
- 19、启动引导与修复
- 19.1.系统运行级别
- 19.1.1.系统运行级别
- 19.1.2.系统默认运行级别:
- 19.1.3./etc/rc.d/rc.local文件:
- 19.2、启动引导程序
- 19.2.1./boot/grub目录:(不常用)
- 19.2.2./boot/grub/grub.conf配置文件:(不常用)
- 19.2.3.grub加密:(不常用)
- 19.3、系统修复模式
- 19.3.1.单用户模式(init 1)修复root密码:
- 2.光盘修复模式:
- 20、服务管理(centos 6)
- 20.1.查询服务自启动
- 20.2.RPM包独立服务启动方式
- 20.3.RPM包独立服务自启动
- 20.4.源码包服务启动方式
- 20.5.源码包服务的自启动
- 20.6.让源码包服务被服务管理命令识别
- 21、进程管理
- 21.1.ps:静态查看进程
- 21.2.top:动态查看进程
- 21.3.pstree:查看进程依赖
- 21.4.kill:杀死进程
- 21.5.killall:根据进程名杀死进程
- 21.6.pkill:根据进程名杀死进程
- 22、工作管理
- 22.1.放入后台
- 22.2.jobs:查看后台
- 22.3.fg:放入前台
- 22.4.bg:放入后台
- 22.5.kill:杀死后台
- 22.6.nohup:后台命令脱离登录终端运行
- 23、系统资源查看
- 23.1.vmstat:监控系统资源
- 23.2.dmesg:显示开机时内核检测信息
- 23.3.free:查看内存信息
- 23.4.查看 CPU 信息
- 23.5.查看本机登陆用户信息
- 23.6.uptime:查看负载
- 23.7.uname:查看内核信息
- 23.8..查看系统发行版本
- 24、定时任务
- 24.1、at服务管理(默认是开的)
- 24.2、at访问控制(不常用)
- 24.3、at:一次性定时任务(不常用)
- 24.4、at管理命令(不常用)
- 24.5、crond服务管理 (默认是开的)
- 24.6、crond访问控制
- 24.7、用户crontab设置(只对该用户生效)
- 24.8、crontab的格式
- 24.9、五个*的含义:
- 24.10、时间的格式:
- 24.11、系统crontab设置(系统根据指定的用户执行)
- 24.12、.anacron(不重要,系统自动执行)
- 25、日志管理
- 25.1.常见日志文件
- 25.2.日志文件格式:
- 25.3.rsyslogd服务的配置文件的格式
- 25.4.自定义日志
- 25.6日志轮替
- 25.6.1.配置文件/etc/logrotate.conf
- 25.6.2.将自定义日志加入日志轮替
- 25.6.3.logrotate:手动执行日志轮替
1、centos6和7的变化
1.1.文件系统
Centos 6:ext4(单个文件最大16TB)
Centos 7:xfs(单个文件最大9EB)
1.2.防火墙、内核版本、默认数据库
CentOS 6.x
防火墙:iptables
内核版本:2.6.x-x
默认数据库:MySQL
CentOS 7.x
防火墙:firewalld
内核版本:3.10.x-x
默认数据库:MariaDB
1.3.时间同步,修改时区,修改语言
CentOS 6.x
# 时间同步:
ntpq -p
# 修改时区:
/etc/sysconfig/clock
# 修改语言:
/etc/sysconfig/i18n
CentOS 7.x
# 时间同步:
chronyc sources
# 修改时区:
timedatectl set-timezone Asia/Shanghai
# 修改语言:
localectl set-locale LANG=zh_CN.UTF-8
1.4.主机名
# CentOS 6.x的配置文件为:(永久设置)
/etc/sysconfig/network
# CentOS 7.x的配置文件为:(永久设置)
/etc/hostname
# CentOS 7.x还可以使用命令永久设置
hostnamectl set-hostname LYY
1.5.网络服务管理
操作行为 | CentOS 6.x | CentOS 7.x |
---|---|---|
启动指定服务 | service 服务名 start | systemctl start 服务名 |
关闭指定服务 | service 服务名 stop | systemctl stop 服务名 |
重启指定服务 | service 服务名 restart | systemctl restart 服务名 |
查看指定服务状态 | service 服务名 status | systemctl status 服务名 |
查看所有服务状态 | service --status-all | systemctl list-units |
设置服务自启动 | chkconfig 服务名 on | systemctl enable 服务名 |
设置服务不自启动 | chkconfig 服务名 off | systemctl disable 服务名 |
1.6.网络设置
网卡名
- CentOS 6.x 网卡名是:eth0
- CentOS 7.x 网卡名是:ens33
网络配置命令
- CentOS 6.x中:ifconfig/setup
- CentOS 7.x中:ip/nmtui
网络服务
- CentOS 6.x默认使用 network 服务
- CentOS 7.x默认使用 NetworkManager 服务(network作为备用)
2、linux基础
-
1.MBR分区表中,1-4为主分区,5开始为逻辑分区。
-
2.分区时,/、/swap、/boot 为必分的分区(boot目录的作用是防止磁盘写满了开不了机)
-
3.远程服务器永不关机、配置防火墙的时候不要把自己过滤了(配置定时任务,配置前每10分钟清空一下防火墙)
-
4.linux的目录结构
目录名 | 目录的作用 |
---|---|
/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行。是/usr/bin/目录的软链接 |
/sbin/ | 存放系统命令的目录,只有超级用户才可以执行。是/usr/sbin/目录的软链接 |
/usr/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行 |
/usr/sbin/ | 存放系统命令的目录,只有超级用户才可以执行 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存位置 |
/etc/ | 配置文件保存位置 |
/home/ | 普通用户的家目录 |
/lib/ | 系统调用的函数库保存位置。是/usr/lib/的软链接 |
/lib64/ | 64位函数库保存位置。是/usr/lib64/的软链接 |
/lost+found/ | 当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里 |
/media/ | 挂载目录。系统建议是用来挂载媒体设备的,如软盘和光盘(基本不用) |
/misc/ | 挂载目录。(基本不用) |
/mnt/ | 挂载目录 |
/opt/ | 第三方安装的软件保存位置(基本不用),都在/usr/local下 |
/proc/ | 虚拟文件系统 |
/var/ | 动态数据保存位置 (缓存、日志、软件运行文件) |
/usr/ | 系统软件资源目录 |
/root/ | root用户的家目录 |
/srv/ | 该目录存放一些服务启动之后需要提取的数据 |
/sys/ | 该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs |
3、目录命令和文件命令
3.1、 目录操作命令
3.1.1.ls:显示目录下的内容
ls [选项] [文件名或目录名]
# 选项:
-a: # 显示所有文件
-d: # 显示目录信息,而不是目录下的文件
-h: # 人性化显示,按照我们习惯的单位显示文件大小
-i: # 显示文件的索引节点号
-l: # 长格式显示
# 例:
ls -l
3.1.2.cd:切换所在目录
cd [路径]
# 例:
cd /usr/local/src # 切换到src目录下(绝对路径)
cd - # 切换到上次使用的目录
cd ~ # 切换到家目录(~可省略)
cd ../ # 切换到本目录的上一个目录(相对路径)
cd ./a # 切换到当前目录下的a目录中(相对路径)
3.1.3.pwd:查询当前所在目录
# 例:
pwd
3.1.4.mkdir:创建空目录
mkdir [选项] 目录名
# 选项:
-p: # 递归建立所需目录
# 例:
mkdir /root/test
3.2、文件操作命令
3.2.1.touch:创建新文件、修改文件时间值
# 例:
touch /root/test.txt
3.2.2.stat:查看文件详细信息
# 例:
stat /root/anaconda-ks.cfg
3.2.3.cat:查看文件内容
cat [选项] 文件名
# 选项:
-A: 相当于 -vET 选项的整合,用于列出所有隐藏符号
-E: 列出每行结尾的回车符$
-n: 显示行号
-T: 把 Tab 键用 ^I 显示出来
-v: 列出特殊字符
# 例:cat anaconda-ks.cfg
3.2.4.more:分屏显示文件
# 例:
more anaconda-ks.cfg
#交互:
空格键: 向下翻页
b: 向上翻页
回车键: 向下滚动一行
/字符串: 搜索指定的字符串
q: 退出
3.2.5.less:分行显示文件
# 例:
less anaconda-ks.cfg
# 交互:
空格键: 向下翻页
b: 向上翻页
回车键: 向下滚动一行
/字符串: 搜索指定的字符串
q: 退出
3.2.6.head:显示文件开头,默认10行
head [选项] 文件名
选项: -n
行数: 从文件头开始,显示指定行数
-v: 显示文件名
# 例:
head anaconda-ks.cfg head -n 20 anaconda-ks.cfg
3.2.7.tail:显示文件结尾,默认10行
tail [选项] 文件名
选项: -n
行数: 从文件结尾开始,显示指定行数
-f: 监听文件的新增内容
# 例:
tail anaconda-ks.cfg tail -n 20 anaconda-ks.cfg tail -f anaconda-ks.cfg
# 需要新开一个连接来添加内容进行测试
3.2. 8.ln:建立快捷方式
ln [选项] 源文件 目标文件
# 选项:
-s: 建立软链接文件。如果不加“-s”选项,则建立硬链接文件
-f: 强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
# 例:
ln -s /usr/local/nginx/bin /usr/local/bin # 一定要写绝对路径
3.3、目录和文件都能操作的命令
3.3.1.rm:删除文件、目录等
rm [选项] 文件或目录
# 选项:
-f: 强制删除(force)
-i: 交互删除,在删除之前会询问用户
-r: 递归删除,可以删除目录(recursive)
# 例:
rm -rf /root/test.txt # 慎用
3.3.2.cp:复制文件、目录
cp [选项] 源文件 目标文件
# 选项:
-a: 相当于 -dpr 选项的集合
-d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
-i: 询问,如果目标文件已经存在,则会询问是否覆盖
-p: 复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
-r: 递归复制,用于复制目录
# 例:
cp -a /root/test.txt /tmp/
3.3.3.mv:剪切文件、目录
mv [选项] 源文件 目标文件
# 选项:
-f: 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i: 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
-v: 显示详细信息
# 例:
mv /root/test.txt /tmp/a.txt # 移动文件并该名
mv /root/test.txt /root/test.txt # 文件改名
4、权限命令和帮助命令
4.1.权限命令
4.1.1.chmod:修改文件或目录的权限
chmod [选项] 权限模式 文件或目录
# 选项:
-R: # 递归设置权限,也就是给子目录中的所有文件设定权限
# 权限模式:
[ugoa][+-=][rwx] 或用数字"r=4、w=2、x=1"
# 例:
chmod u+r test.txt
chmod 753 test.txt
4.1.2.chown:修改文件或目录的属主和属组
chown [选项] 属主.属组 文件或目录
# 选项:
-R: # 递归设置权限,也就是给子目录中的所有文件设定权限
# 例:
chown -R lzp test.txt # 更改属主
chown -R .lzp test.txt # 更改属组
chown -R lzp.lzp test.txt # 更改属主和属组
# 注:普通用户不能修改修改文件的属主(即使文件属主是他自己)
4.1.3.umask:权限掩码
umask # 查看权限掩码(八进制)
# 新建文件的默认权限最大只能是666,而umask的值是 022
“-rw-rw-rw-”减去“-----w--w-”等于“-rw-r--r—”
# 新建目录的默认权限最大可以是777,而umask的值是022
“drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”
4.1.4.getfacl:查看文件或目录的ACL
# 语法格式:
getfacl [选项] [目录或文件]
# 例:
getfacl /etc/hostname
4.15、setfacl:设置文件ACL规则
# 语法格式:
setfacl [选项] [文件]
# 选项:
-x: # 删除单个用户的ACL权限
-b: # 删除所有扩展访问控制列表条目
-R: # 递归操作子目录
-m: # 更改文件的访问控制列表
# 例:
setfacl -Rm u:lzp:rw- test # 设置lzp用户对该文件的acl权限
setfacl -x u:lzp test # 删除lzp用户对改文件的acl权限
4.2、帮助命令
4.2.1、man:显示联机帮助手册
man [选项] 命令
# 选项:
-f: # 查看命令拥有哪个级别的帮助
-k: # 查看和命令相关的所有帮助
# 例:
man ls
# 查看ls的帮助手册
4.2.2、info:一套完整的说明资料
# 例:
info ls
4.2.3、–help:查看帮助
# 例:
ls --help
5、搜索命令和别名命令
5.1、whereis
- 定位指令的二进制程序、源代码文件和man手册页等相关文件的路径
# 例:
whereis ls
5.2、which:查找并显示给定命令的绝对路径
# 例:
which ls
5.3、locate:根据一个数据库搜索文件
数据库位置:/var/lib/locatedb;每天自动更新一次
使用locate之前,先使用updatedb命令,手动更新数据库
# 例:
locate /etc/sh # 搜索etc目录下所有以sh开头的文件
locate -i ~/m # 搜索用户主目录下,所有以m开头的文件,并且忽略大小写
5.4、find:在指定目录中搜索文件
# 语法:
find 搜索路径 [选项] 搜索内容
5.4.1 按照文件名搜索
# 选项:
-name: # 按照文件名搜索
-iname: # 按照文件名搜索,不区分文件名大小写
# 例:
find . -name "*.txt" # 搜索当前目录下所有的.txt文件
5.4.2 按照文件大小搜索
# 选项:
-size [+|-]大小: # 按照指定大小搜索文件,单位:“b、c、w、k、M、G”,默认b
# 例:
find /etc -size +2k # 搜索/etc目录下大于2kb的文件
5.4.3 按照修改时间搜索
# 选项:
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索
# 例:
find /var/log/ -mtime +30 # 搜索30天前修改过的文件
find /var/log/ -mtime -7 # 搜索7天内修改过的文件
5.4.4 按照权限搜索
# 选项:
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm -权限模式: 查找文件权限全部包含“权限模式”的文件
-perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件
# 例:
find /etc -perm 777 # 搜索/etc下权限为777的文件
5.4.5 按照文件类型搜索
# 选项:
# 查找目录
-type d:
# 查找普通文件
-type f:
#查找软链接文件
-type l:
# 搜索/etc下的普通文件
# 例:
find /etc -type f
5.4.6 逻辑运算符
# 选项:
# 逻辑与
-a:
# 逻辑或
-o:
# 逻辑非例:
-not:
# 搜索所有以.txt和.pdf结尾的文件
find . -name "*.txt" -o -name "*.pdf"
# 搜索大于2KB,并且文件类型是普通文件的文件
find . -size +2k -a -type f
# 搜索不是普通文件的东西
find . -not -type f
5.4.7 -exec:调用外部命令
# 例:
find .-type f -user root -exec chown tom {} \; # 搜索属主是root的文件,并更改为用户tom
5.5、grep:搜索文件中的内容
grep [选项] "搜索内容" 文件名
# 选项:
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
# 例:
grep -v "root" /etc/passwd # 在/etc/passwd中搜索root,然后取反显示
5.6、:将上一个命令的输出作为下一个命令的输入(管道符)
# 例:
netstat -an | grep "ESTABLISHED" | wc -l # 统计网络连接数量
5.7、alias:别名
alias 别名='原命令'
例:
alias ser='service network restart' # 后续使用时,直接输入ser # 用命令定义的别名,是临时生效的,要想永久生效,需要写入环境变量配置文件~/.bashrc
6、压缩命令和关机重启
6.1、zip:压缩文件或目录
# 语法:
zip [选项] 压缩包名 源文件或源目录
# 选项: 压缩目录
-r:
# 例子:
zip ana.zip anaconda-ks.cfg
6.2、uzip:解压缩文件
# 语法:
unzip [选项] 压缩包名
# 选项:指定解压缩位置
-d:
# 例如:
unzip -d /tmp/ ana.zip
6.3、tar:打包与解除打包
# 语法:
tar [参数] [文件或目录]
# 选项:
-c: # 建立新的备份文件
-C 目录: # 指定解打包位置
-f: # 指定压缩包的文件名
-v: # 显示打包文件过程
-z: # 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz(用来识别)
-t: # 列出备份文件的内容
-x: # 从打包文件中提取文件
# 例:
tar -cf all.tar *.jpg # 将所有.jpg的文件打成一个名为all.tar的包
tar -xf all.tar -C /tmp # 提取包里面的文件到指定目录(解压缩)
tar -zcvf log.tar.gz linuxcool.log # 打包文件以后,以 gzip 压缩
tar -zxvf log.tar.gz -C /tmp # 解压缩到指定文件
tar -cvf linuxcool.tar linuxcool --remove-files # 打包文件之后删除源文件
6.4、sync:强制将内存缓冲区中的数据立即写入磁盘中(一般不需要用)
#语法:
sync
#例:
sync
6.5、shutdown:关机和重启
# 语法:
shutdown [选项] [参数]
# 选项:
-r: # 重新启动
-h: # 系统关机
-c: # 取消已经执行的 shutdown 命令
# 例:
shutdown -h now # 指定现在立即关机
shutdown -r now # 指定现在重启
shutdown -h 22:30 # 指定时间关机
shutdown -c # 取消按预定时间关闭系统
shutdown +5 "System will shutdown after 5 minutes" # 指定5分钟后关机,同时送出信息给登入用户
6.6、reboot:重启系统
# 语法:
reboot
7、网络命令和系统痕迹
7.1、配置IP地址
# 方法一:
setup(centos6)| nmtui(centos7)
# 方法二:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO="static" # 可选static和dhcp
IPADDR="192.168.248.133" # 设置IP地址
NETMASK="255.255.255.0" # 设置子网掩码
GATEWAY="192.168.248.2" # 设置网关
DNS1="114.114.114.114" # 设置第一个DNS
DEFROUTE="yes" # 开启默认路由
# ubuntu16更改IP:
vim /etc/network/interfaces
------------------------------------------------------------------------
auto ens33
iface ens33 inet static
address 192.168.248.11
netmask 255.255.255.0
gateway 192.168.248.2
dns-nameserver 223.6.6.6 114.114.114.114
------------------------------------------------------------------------
sudo systemctl restart networking
7.2、ifconfig:查看本机的IP信息
yum -y install net-tools # 需要先安装此工具才能使用此命令
ifconfig # 查看本机信息
ifconfig eth0 up # 启动eth0网卡(ifup eth0)
ifconfig eth0 down # 关闭eth0网卡(ifdown eth0)
-v # 显示详细信息
-s # 显示简短信息
-a # 显示所有接口,即使已经关闭的
7.3、ping:测试网络连接
ping [选项] IP
# 选项:
-c 次数: # 用于指定 ping 的次数
# 例:
ping 114.114.114.114 # ctrl+c手动停止
ping -c 1 192.168.1.0 # 测试一个数据包
7.4、netstat:网络状态查看
netstat [选项]
# 选项:
-a: # 列出所有网络状态,包括 Socket 程序
-n: # 使用 IP 地址和端口号显示,不使用域名与服务名
-p: # 显示 PID 和程序名
-t: # 显示使用 TCP 协议端口的连接状况
-u: # 显示使用 UDP 协议端口的连接状况
-l: # 仅显示监听状态的连接
-r: # 显示路由表
# 例:
netstat -tuln # 查看本机正在侦听的端口
netstat -anp # 查看所有连接并显示PID
7.5、mail:发送和接收电子邮件
安装此软件才能使用 :
yum -y install mailx
# 语法:
mail [选项]
# 选项:
-s # 给邮件追加主题
-a # 发送邮件附件,多个附件使用多次-a选项即可
# 例:
echo "hello" | mail -s test test@linuxcool # 标题“test”,内容“hello”的邮件
mail # 查看邮件
=======================================================================================
7.6、w:显示系统中正在登陆的用户信息
# 该命令查看的是/var/run/utmp
# 例:
w
7.7、last:查看系统所有登陆过的用户信息
# 该命令查看的是/var/log/wtmp
# 例:
last
7.8、lastb:查看错误登陆的信息
# 查看的是/var/log/btmp
# 例:
lastb
7.9、ethtool:查看网卡信息
# 例:
ethtool eth1
7.10、lspci:查看网卡型号
# 例:
lspci | grep -i eth
7.11、iftop:查看实时网络流量
# 例:
iftop
7.12、sar:统计各种信息(包括网卡流量、cpu使用率)
sar命令包含在sysstat工具包中,提供系统的众多统计数据。其在不同的系统上命令有些差异,某些系统提供的sar支持基于网络接口的数据统计,也可以查看设备上每秒收发包的个数和流量。
sar –n DEV 1 2 # DEV显示网络接口信息;每一秒钟取1次值,取2次。
另外,-n参数很有用,他有6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含义如下:
- DEV显示网络接口信息。
- EDEV显示关于网络错误的统计数据。
- NFS统计活动的NFS客户端的信息。
- NFSD统计NFS服务器的信息
- SOCK显示套接字信息
- ALL显示所有5个开关
[sre@CDVM-213017031 ~]$ sar -n DEV 1 2
Linux 2.6.32-431.el6.x86_64 (CDVM-213017031) 05/04/2017 _x86_64_ (4 CPU)
08:05:30 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:05:31 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:05:31 PM eth0 1788.00 1923.00 930.47 335.60 0.00 0.00 0.00
08:05:31 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:05:32 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:05:32 PM eth0 1387.00 1469.00 652.12 256.98 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 1587.50 1696.00 791.29 296.29 0.00 0.00 0.00
参数说明:
- IFACE:LAN接口
- rxpck/s:每秒钟接收的数据包
- txpck/s:每秒钟发送的数据包
- rxbyt/s:每秒钟接收的字节数
- txbyt/s:每秒钟发送的字节数
- rxcmp/s:每秒钟接收的压缩数据包
- **txcmp/**s:每秒钟发送的压缩数据包
- rxmcst/s:每秒钟接收的多播数据包
- rxerr/s:每秒钟接收的坏数据包
- txerr/s:每秒钟发送的坏数据包
- coll/s:每秒冲突数
- rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
- txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
- txcarr/s:发送数据包时,每秒载波错误数
- rxfram/s:每秒接收数据包的帧对齐错误数
- rxfifo/s:接收的数据包每秒FIFO过速的错误数
- txfifo/s:发送的数据包每秒FIFO过速的错误数
8、挂载命令
8.1、mount:文件系统挂载
# 语法:
mount [选项]
# 选项:
-t # 指定挂载的文件类型
-l # 显示已加载的文件系统列表
-r # 将文件系统加载为只读模式
-a # 加载文件“/etc/fstab”中描述的所有文件系统
# 例:
mount /dev/cdrom /mnt/cdrom # 挂载 /dev/cdrom 到 /mnt/cdrom
mount # 查看系统中已经挂载的文件系统
8.1.1、光盘挂载
CentOS 5.x 以前的系统,光盘设备文件名是:/dev/hdc
CentOS 6.x 以后的系统,光盘设备文件名是:/dev/sr0
mount -t iso9660 /dev/cdrom /mnt/cdrom/ # 挂载光盘(/dev/cdrom是光盘的软连接)
umount /mnt/cdrom # 卸载光盘
8.1.2、挂载U盘
fdisk -l # 查询U盘名
mount -t vfat /dev/sdb1 /mnt/usb/ # 挂载U盘,中文会乱码
mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/ # 挂载指定编码为中文
umount /mnt/usb/ # 卸载U盘
8.1.3、挂载NTFS分区
# 1.下载NFTF-3G插件
wget http://www.tuxera/community/ntfs-3g-download/
# 2.安装插件
tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz # 解压
cd ntfs-3g_ntfsprogs-2013.1.13
./configure # 编译器准备
make
make install
# 3.挂载NTFS分区
mount –t ntfs-3g /dev/sdb1 /mnt/win
8.2、开机自动挂载
vim /etc/fstab
/dev/sdb /mnt/sdb xfs defaults 0 0
挂载分区 挂载点 文件系统
UUID=`blkid` /mnt/sdb xfs defaults 0 0 # 用uuid可以防止硬盘更名,blkid查询UUID
mount -a # 加载文件“/etc/fstab”中描述的所有文件系统
9、vim编辑器
9.1、vim的三种工作模式
# 1.命令模式 # (vim 文件名) 进入命令模式
# 2.输入模式 # 在命令模式输入a、i、o进入输入模式,按esc退出
# 3.末行模式 # 按“:”进入末行模式(也叫编辑模式),按esc退出
# 命令模式的操作:
↑、↓、←、→ # 方向键,移动光标
h、j、k、l # 移动光标(左、下、上、右)
^ # 移动至行首
$ # 移动至行尾
gg # 移动至文件头部
G # 移动至文件尾部
dd # 剪切光标所在行
3dd # 剪切光标所在行以下的3行
yy # 复制光标所在行
3yy # 复制光标所在行以下的3行
p # 粘贴到光标后
u # 撤销
ctrl+r # 重做
r # 替换光标所在字符
R # 进入替换模式,从光标所在处开始替换字符,按 ESC 结束
dG # 删除光标之后的所有内容
dgg # 删除光标之前的所有内容
/lzp # 在光标之后查找lzp,用n和N切换下一个或上一个
?lzp # 在光标之前查找lzp,用n和N切换下一个或上一个
v # 可视模式
V # 可视行模式
ctrl+v # 块可视模式
% # 跳转到相配对的括号
mx # 设置书签(x只能是a-z的26个字母)
:marks # 查看设置的书签
`x # 跳转到设置的书签处
>↓ # 增加缩进,"x>↓"表示增加以下x行的缩进(4个方向都能用)
<↓ # 减少缩进,"x<↓"表示减少以下x行的缩进
{ # 跳到上一段的开头
} # 跳到下一段的的开头
w # 移动到下一个单词的开头
b # 移动到单词的开头
e # 移动到单词的结尾
ctrl + f # 向下翻页
ctrl + b # 向上翻页
# 进入输入模式:
a # 追加,在光标所在字符后插入
A # 追加,在光标所在行尾插入
i # 插入:在光标所在字符前插入
I # 插入:在光标所在行行首插入
o # 在光标下插入新行
O # 在光标上插入新行
# 末行模式操作:
:w # 保存不退出
:w 新文件名 # 另存为新文件
:q # 不保存退出
:wq # 保存退出
:! # 强制
:q! # 强制不保存退出,用于修改文件之后,不保存数据退出。
:wq! # 强制保存退出,当文件的所有者或者 root 用户,对文件没有写权限的时候,强制写入数据使用
:1,10d # 删除1至10行
:1,10s/old/new/ # 替换1到10行第一个old
:1,10s/old/new/g # 替换1到10行的所有old为new,(///可以被:::代替)
:%s/old/new/g # 替换整个文件的old为new
:g/ *#.*/d # 删除包含#的行
:g/^\s*$/d # 删除空行
:%s/#.*//g # 删除#以及后面的内容
:%s/[ \t]*// # 删除内容开头的所有空格或制表符
:%s/[ \t]\{2,3\}// # 删除内容开头的2个到3个空格或制表符
# 设置参数:
:set all # 查看所有设置参数
:set nu # 显示行号
:set nonu # 取消显示行号
:set nohlsearch # 取消高亮显示
:set paste # 进入 paste 模式,这时候再整段复制粘贴,就OK了
:set nopaste # 退出 paste 模式
:set fileencoding # 查看文件编码格式,简写为:set fenc
:set fileencoding=utf-8 # 设置文件编码格式
vim ~/.vimrc # 编辑vim配置文件,使设置参数永远生效
9.2、vim使用技巧
9.2.1.分屏编辑
vim -o abc.txt bcd.txt # 小写o会上下分屏打开两个文件
vim -O abc.txt bcd.txt # 大写O会左右分屏打开两个文件
# 按ctrl+w,再按↑、↓箭头切换文件
9.2.2.windows中编写的脚本转换成linux
# Windows下回车符在Linux中是用“^M$”符号显示,而不是“$”符。这样会导致Windows下编辑的程序脚本,无法在Linux 中执行。
yum -y install unix2dos*
yum -y install dos2unix*
dos2unix test.sh # 把Windows格式转为Linux格式
unix2dos test.sh # 把Linux格式转为Windows格式
9.2.3.设置tab键缩进4字符
vim /etc/vimrc # 新增以下内容
set tabstop=4 # 设置tab宽度为4个字符(sed之类的命令使用)
set softtabstop=4 # 设置按下tab宽度为4个字符(交互使用)
set shiftwidth=4 # 设置shift+>缩进为4个字符
set ai # 设置换行自动缩进(粘贴时会导致格式出错)
9.2.4.vim中的正则、扩展正则
# 扩展正则 + 号
97,124 s/\( \+\)/\1#/ # 在第一个非空字符前插入#号
# 正则
:g/ *#.*/d # 删除包含#的行
:g/^\s*$/d # 删除空行
:%s/#.*//g # 删除#以及后面的内容
:%s/[ \t]*// # 删除内容开头的所有空格或制表符
:%s/[ \t]\{2,3\}// # 删除内容开头的2个到3个空格或制表符
# vim扩展正则表:
\| # 表示交替(alternative) home\|house
\+ # 它前面的正则表达式匹配一次或多次
\= # 它前面的正则表达式匹配零次或一次
\{} # 它前面的正则表达式匹配零次或多次,和*一样
\{-n,m} # 它前面的正则表达式匹配n之吗m次,但匹配最低次数即可
\{-,m} # 它前面的正则表达式匹配0次至m次,但匹配最低次数即可
\i # 匹配任何标识符的字符,标识符由isident
\I # 与\i相同,排除数字
\k # 匹配任何关键字的字符,关键字由iskeyword选项定义
\K # 与\k相同,但排除数字
\f # 匹配任何文件名称的字符,文件名称字符由isfname定义
\F # 与\f相同,但排除数字
\p # 匹配任何可打印字符,由isprint选项定义
\P # 与\p相同,但排除数字
\s # 匹配一个空格字符(空格或者tab)
\S # 匹配任何不为空白或tab字符的内容
\b # 退格键
\e # Escape键
\r # 回车键
\t # tab键
\n # 用于匹配多行的模式
10、rpm软件包安装
10.1、默认安装位置
RPM包默认安装路径 | |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
10.2、RPM 包安装
# 语法:
rpm –ivh 包全名
# 选项:
-i # install安装(install)
-v # 显示更详细的信息(verbose)
-h # 打印#显示安装进度(hash)
# 例:
rpm -ivh httpd-2.2.15-53.el6.centos.x86_64.rpm # 会报依赖错误
# 依赖查询网址:http://www.rpmfind/
# 其他选项:
--force # 不管是否已经安装,都重新安装
--test # 检测依赖性,不会实际安装
# 例:
rpm -ivh httpd-2.2.15-53.el6.centos.x86_64.rpm --force
10.3、服务的启动与停止
# 语法:
service 服务名 start|stop|restart|status
# 例:
service httpd start
# 语法:
systemctl start|stop|restart|status 服务名
# 例:
systemctl start httpd
# 语法:
/etc/init.d/服务名 start|stop|restart|status
# 例:
/etc/init.d/httpd start
10.4、rpm 包升级
# 语法:
rpm –Uvh 包全名
# 选项:
-U(大写) 升级安装,如果没有安装过,系统直接安装。如果安装过的版本较旧,则升级到新版本(upgrade)
# 例:
rpm -Uvh httpd-5.2.15-53.el6.centos.x86_64.rpm
10.5、rpm 包卸载(也要先卸载依赖包)
# 语法:
rpm -e 包名
# 例:
rpm -e httpd
rpm -e --nodeps # 忽略依赖卸载
10.6、rpm 包查询
# 选项:
-q # 查询
-a # 所有
-f # 查询文件或命令属于哪个软件包
-l # 列出软件包中的文件
# 例:
rpm -qa # 列出所有安装过的包
rpm -qf /etc/myf # 查询文件或命令属于哪个软件包
rpm -ql httpd
11、yum在线安装软件
11.1、yum 配置文件
# 路径:
/etc/yum.repos.d/
vim /etc/yum.repos.d/CentOS-Base.repo
[base] # 容器名称,一定要放在[]中。
name=CentOS-$releasever - Base # 容器说明,可以自己随便写
baseurl=http://mirror.centos/centos/$releasever/os/$basearch/ # yum 源服务器的地址
gpgcheck=1 # RPM的数字证书,1表示生效,0表示不生效
enabled=1 # 是否生效,1表示生效(默认值),0表示不生效
11.2、搭建本地光盘yum源
# 1.放入CentOS安装光盘,并挂载光盘到指定位置
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/
# 2.备份系统原有yum源
cd /etc/yum.repos.d/
mkdir backup
cp *.repo backup
# 3.新建光盘 yum 源配置文件
vim CentOS-Media.repo # 新建文件,添加以下内容(也可以复制一个当模板)
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom # 光盘挂载地址(file//代表连接,/mnt/cdrom代表路径)
gpgcheck=0
enabled=1
11.3、yum 常用命令
yum repolist # 查看仓库清单
yum list # 查询所有可用软件包列表
yum list httpd # 查询单个软件包
yum search ifconfig # 搜索 yum 源服务器上所有和ifconfig相关的软件包
yum provides ifconfig # 反向查ifconfig属于哪个包
yum info samba # 查询 samba 软件包的信息
yum -y install gcc # 安装gcc软件(-y:自动回答 yes)
yum -y update httpd # 升级httpd软件(需要yum源中有比现版本高的软件包)
yum -y update # 升级所有软件包
yum remove samba # 卸载 samba 软件包
yum -y autoremove samba # 自动清理软件包(会卸载相关依赖,有可能对其他软件造成影响)
yum clean all # 清理yum过期的缓存
yum makecache # 把服务器的包信息下载到本地电脑缓存起来
yum install --downloadonly --downloaddir=/root/ ceph-osd # 仅下载软件包(默认会保存至/var/cache/yum/)
11.4、yum组管理命令
yum grouplist # 列出所有可用的软件组列表
yum groupinfo "Web Server" # 查询软件组"Web Server"中包含的软件
yum groupinstall "Web Server" # 安装网页服务软件组
yum groupremove "Web Server" # 卸载网页服务软件组
11.5、搭建阿里云yum源
# 使用官方最新教程:
https://developer.aliyun/mirror/centos?spm=a2c6h.13651102.0.0.45b21b11bU6HxU
12、源码包安装软件
12.1、源码安装apache(示例)
# 1.下载apache源码包
cd /usr/local/src
wget http://mirror.bit.edu/apache/httpd/httpd-2.4.41.tar.gz
# 2.安装gcc编译工具以及库环境
yum -y install gcc gcc-c++ zlib-devel pcre-devel apr-devel
# 3.解压下载的软件包
tar -zxvf httpd-2.4.41.tar.gz # 解压至指定目录
cd /usr/local/src/httpd-2.4.41 # 进入解压目录
./configure --prefix=/usr/local/apache # 开始配置并检测依赖环境,并指定安装目录,新版本用cmake
# ./configure --help 查看所有选项
make # 使用上一步生成的Makefile文件,开始编译
make install # 编译安装
# make clean # 报错时使用此命令清空编译内容
# 4.启动apache服务
/usr/local/apache/bin/apachectl start # 不使用service快捷启动的原因是为了区分源码和rpm
netstat -tuln | grep "80"
12.2、删除源码安装的软件
rm -rf /usr/local/apache # 删除安装目录即可
=======================================================================================
12.3、打补丁(了解有这个东西即可)
12.3.1.生成补丁(用旧文件对比新文件再重定向输出就是补丁文件)
# 语法:
diff 选项 旧文件 新文件
# 选项:
-a 将任何文档当做文本文档处理
-N 当比较两个目录时,如果某个文件只在一个目录中,则在另一个目录中视作空文件
-r 当比较目录时,递归比较子目录
-u 使用同一的输出格式
# 例:
diff -Naur /root/test/old.txt /root/test/new.txt > txt.patch
12.3.2.打入补丁
# 语法:
patch –pn < 补丁文件
# 选项:
-pn n代表更新文件的深度
# 例:
patch -p3 < txt.patch
=======================================================================================
12.4、脚本安装软件包(不常见)
# lnmp一键部署脚本安装说明:
https://lnmp/install.html
12.4.1.用webmin管理linux
# 1.下载webmin
cd /usr/local/src
wget http://sourceforge/projects/webadmin/files/webmin/
# 2.解压
tar -zxvf webmin-1.610.tar.gz
cd webmin-1.610
# 3.执行安装程序setup.sh
/usr/local/apache/bin/apachectl start # 启动apache
./setup.sh # 以下内容为命令输出
Config file directory [/etc/webmin]:
# 选择安装位置,默认安装在/etc/webmin 目录下。如果安装到默认位置,则直接回车
Log file directory [/var/webmin]:
# 日志文件保存位置,直接回车,选择默认位置
Full path to perl (default /usr/bin/perl):
# 指定 Perl 语言的安装位置,直接回车,选择默认位置,Perl 默认就安装在这里
Web server port (default 10000):
# 指定 Webmin 监听的端口,直接回车,默认选定 10000
Login name (default admin):admin
# 输入登录 Webmin 的用户名
Login password:
Password again:
# 输入登录密码
The Perl SSLeay library is not installed. SSL not available.
# apache 默认没有启动 SSL功能,所以 SSL 没有被激活
Start Webmin at boot time (y/n):y
# 是否在开机的同时启动 Webmin
and login with the name and password you entered previously.
# 安装完成
# 4.进入webmin进行管理linux
http://192.168.248.134:10000/ # 浏览器输入该地址进行访问
13、用户管理
13.1、用户信息文件/etc/passwd
# 例:
root:x:0:0:root:/root:/bin/bash # (用":"分为7列)
# 第一列:用户名
# 第二列:密码标识位
# 第三列:用户ID # 将普通用户的UID改为0也能变成管理员
# 第四列:组ID
# 第五列:用户描述
# 第六列:用户家目录
# 第七列:登录shell,/bin/bash;不能登录shell,/sbin/nologin
13.2、影子文件 /etc/shadow (存放密码)
#例:
root:$6$9w5Td6lg$bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fI38RH15wzVoomff9isV1Pzd
cXmixzhnMVhMxbv0:15775:0:99999:7::: # (用":"分为9列)
# 第一列:用户名
# 第二列:加密后的密码
# 第三列:密码最近更改时间(时间戳格式), 1970年1月1日作为标准时间
# 第四列:两次密码的修改间隔时间(和第3字段相比)
# 第五例:密码有效期(和第3字段相比)
# 第六列:密码修改到期前的警告天数(和第5字段相比)
# 第七列:密码过期后的宽限天数(和第5字段相比)
# 第八列:密码失效时间(到期后用户就无法使用)
# 第九列:保留
13.3、组信息文件 /etc/group
#例:
root:x:0:root # (用":"分为4列)
# 第一列:组名
# 第二列:组密码位
# 第三列:组ID
# 第四列:此组中支持的其他用户,附加组是此组的用户
=======================================================================================
13.4、添加、删除用户
# 语法:
useradd 选项 用户名 # 添加用户
# 选项:
-u 550 # 指定UID为550
-G lzp # 指定附加组为550
-d /home/lzp # 手工指定家目录,目录不需要事先建立
-s /bin/bash # 指定用户是可登录,默认值(设为/sbin/nologin表示不可登录)
-c "test" # 添加用户描述
-M # 不创建用户家目录
# 例:
useradd -u 550 -G root -d /home/lamp1 -s /bin/bash lamp1
# 语法: userdel [-r] 用户名 # 删除用户
# 选项:
-r: 在删除用户的同时删除用户的家目录
# 例:
userdel -r lamp1
13.5、设置用户密码
# 语法:
passwd [选项] 用户名
#选项:
-l: # 暂时锁定用户。仅root用户可用
-u: # 解锁用户。仅root用户可用
--stdin: # 可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用
# 例:
passwd # 修改当前用户的密码
echo "123" | passwd --stdin user1 # 给user1添加密码为123
chage -d 0 user1 # 设置用户登陆时需要修改密码
13.6、用户信息修改
# 语法:
usermod [选项] 用户名
# 选项:
-u 666: # 修改用户的UID为666
-d /home/lzp: # 修改用户的家目录为/home/lzp。家目录必须写绝对路径
-c "test": # 修改用户的说明信息为"test",就是/etc/passwd文件的第五个字段
-g lzp: # 修改用户的初始组为lzp,就是/etc/passwd 文件的第四个字段
-G lzp: # 修改用户的附加组为lzp,其实就是把用户加入其他用户组
-s /sbin/nologin: # 修改用户的登录Shell为/sbin/nologin。默认是/bin/bash
-L: # 临时锁定用户(Lock)
-U: # 解锁用户(Unlock)
# 例:
usermod -s /sbin/nologin lzp
usermod -G testgroup lzp # 添加lzp用户的附加组
13.7、切换用户身份
# 语法:
su [选项] 用户名
# 选项:
-: # 选项只使用“-”代表连带用户的环境变量一起切换
-c ls: # 仅执行一次命令,而不切换用户身份
# 例:
su - # 切换至root用户(root可省略)
su -lzp # 切换至lzp用户
13.8、添加、删除用户组
# 语法:
# 添加用户组选项:
groupadd [选项] 组名
# 指定用户组的组ID例:
-g GID:
# 添加LYY组
groupadd LYY
# 语法:
# 组名
groupdel
# 例:
groupdel lyy
13.9、把用户添加进组或从组中删除
# 语法:
# 添加组密码选项:
gpasswd [选项] 组名
# 把用户加入组
-a 用户名:
# 把用户从组中删除
-d 用户名:
# 例:
# 把用户 user1 加入 grouptest 组
gpasswd -a user1 grouptest
# 把用户 user1 从 grouptest 组中删除
gpasswd -d user1 grouptest
14、权限管理
14. 1、查询、设置ACL 权限
# 语法:
getfacl 文件名 # 查询文件的ACL权限
# 例:
getfacl test.txt
# 语法格式:
setfacl [选项] [文件] # 设置文件ACL权限
# 选项:
-x: # 删除单个用户的ACL权限
-b: # 删除所有扩展访问控制列表条目
-R: # 递归操作子目录
-m: # 更改文件的访问控制列表
#例:
setfacl -Rm u:lzp:rw- test # 设置lzp用户对该目录及子目录的acl权限(递归会导致权限溢出)
setfacl -x g:lzp:5 test # 设置lzp组对改文件的acl权限
setfacl -x u:lzp test # 删除lzp用户对改文件的acl权限
setfacl -b /test.txt # 清空acl权限
14.2、sudo:给普通用户赋予部分管理员权限
赋予用户的命令越简单,代表该用户的权限越大
赋予用户的命令越复杂,代表该用户的权限越小
visudo # 打开sudo的配置文件(/etc/sudoers)
# %wheel ALL=(ALL) ALL # 107行
# %组名 被管理主机的地址=(可使用的身份) 授权命令(必须使用绝对路径)
测试:
# 1.赋予普通用户重启命令的权限
visudo
user1 ALL=/sbin/shutdown –r now # 添加此行,省略了身份转换
su user1
sudo -l # 查看可用的授权
sudo /sbin/shutdown -r now # 使用sudo命令
# 2.赋予普通用户添加用户的权限
visudo
aa ALL=/usr/sbin/useradd # 赋予aa 添加用户权限.命令必须写入绝对路径
aa ALL=/usr/bin/passwd # 赋予改密码权限
aa ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
# 禁止对root的密码修改
14.3、文件的特殊权限(了解即可)
14.3.1.SetUID:用户执行这个文件时将以文件属主的身份执行
# 赋予SUID权限: # 该文件必须有执行权限
chmod u+s abc.sh
chmod 4755 abc.sh # 4代表SUID,SUID只对执行文件有效
# ls -l /usr/bin/passwd,所有者的s权限代表SUID(大写S代表报错,没有执行权限)
14.3.2.SetGID:用户执行这个文件时将以文件属组的身份执行
# 赋予SGID权限:
chmod g+s ftest.sh
chmod 2755 ftest.sh # 2代表SGID
# ls -l /usr/bin/locate ,所属组的s权限代表SGID
14.3.3.Sticky BIT:使普通用户不能删除其他用户建立的文件
# 赋予SBIT权限:
chmod o+t dtest/
chmod 1755 dtest/
# 1代表SBIT,SBIT只对目录有效 # ls -l dtest/,其他中的t权限代表SBIT
14.4、chattr:更改文件属性(不常用)
# 语法:
chattr [+-=][选项] 文件或目录名
# 选项:
# 增加权限
+
# 删除权限
-
# 等于某权限
=
# 对文件:不能删除、改名、修改内容;对目录:只能修改目录下文件的内容,但不能建立和删除文件
i
# 对文件:只能追加内容,不能修改、删除;对目录:允许在目录中建立和修改文件,但是不能删除
a
# 例:
# 增加a属性
chattr +a /etc/resolv.conf
# 删除a属性
chattr -a /etc/resolv.conf
14.5、lsattr:查看文件隐藏属性
# 语法:
lsattr 选项 文件名
# 选项:
# 显示所有文件和目录
-a
# 若目标是目录,仅列出目录本身的属性,而不是子文件的
-d
# 例:
lsattr /etc/resolv.conf
15、磁盘管理
15.1、df:显示磁盘空间使用情况
# 语法:
df [选项] [指定文件]
# 选项:
-h # 人性化显示
-T # 输出时显示文件系统类型
# 例:
df -hT
df -t ext4 # 显示文件类型为ext4的磁盘使用情况
15.2、du:查看占用空间
# 语法:
du [选项] [文件]
# 选项:
-a # 显示目录中所有文件大小
-k # 以KB为单位显示文件大小
-m # 以MB为单位显示文件大小
-g # 以GB为单位显示文件大小
-h # 以易读方式显示文件大小
# 例:
du log2012.log # 显示指定文件所占空间
du -h scf/ # 以易读方式显示文件夹内及子文件夹大小
du -hc --max-depth=1 scf/ # 输出目录下各个子目录所使用的空间
15.3、判断文件、命令类型
file 文件名 # 判断文件类型
type 命令名 # 判断命令类型
15.4、lsblk:查看系统的磁盘
# 语法:
lsblk [参数]
# 例:
lsblk
15.5、blkid:显示UUID
# 语法:
blkid [参数]
# 例:
blkid
blkid -s UUID /dev/sda5 # 显示指定设备 UUID
15.6、基本磁盘管理
# 1.查看服务器现有磁盘
ls /dev/sd* # 所有磁盘都会以sd开头存放在/dev下
# 2和3都是磁盘分区,根据不同的磁盘模式选择其中一个即可
# 2.磁盘分区(MBR)
fdisk /dev/sdb # 进入交互模式
d:删除分区
n:新建分区
p:显示分区信息
q:退出不保存
w:保存修改
m:显示帮助菜单
# 3.磁盘分区(GPT)
gdisk /dev/sdb # 进入交互模式,与fdisk的命令一样
# 4.格式化分区,创建文件系统
partprobe /dev/sdb # 更新分区表(非必须命令)
mkfs.ext4 /dev/sdb1 或者 mkfs.xfs -f /dev/sdb1 # -f 强制执行
# 5.挂载分区至本地目录(参考《7、挂载命令》)
mkdir /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1 # 或者编辑 fstab 文件用UUID开启自动挂载
15.7、LVM:逻辑卷管理(重点)
# 1.创建物理卷
pvcreate /dev/sdb1
pvs 或 pvscan # 查看物理卷
# 注: 如果提示“Device /dev/sdb excluded by a filter”,就依次输入:
parted /dev/sdb
·mklabel msdos
·yes
·quit
# 2.创建卷组
vgcreate vg1 /dev/sdb1 # 创建名为vg1的卷组
vgcreate vg1 /dev/sdc1 # 添加磁盘进卷组
vgs 或 vgscan # 查看物理卷
# 3.创建逻辑卷
lvcreate -L +20G -n lv1 vg1 # 从卷组拿空间创建逻辑卷lv1
lvcreate -l 100%FREE -n lv2 vg1 # 用卷组的剩余空间创建逻辑卷lv2
lvs 或 lvscan # 查看逻辑卷
# 4.格式化逻辑卷,创建文件系统
mkfs.xfs /dev/vg1/lv1 # 将lv1格式化为xfs文件格式
mkfs.ext4 /dev/vg1/lv2 # 将lv2格式化为ext4文件格式
# 5.挂载逻辑卷至本地目录(参考《7、挂载命令》)
mkdir /mnt/lv1 /mnt/lv2
mount /dev/vg1/lv1 /mnt/lv1
mount /dev/vg1/lv2 /mnt/lv2 # 或者编辑 fstab 文件用UUID开启自动挂载
15.8、LVM扩容、缩小、删除
# 1.扩容卷组
pvcreate /dev/sdd1 # 创建物理卷
vgextend vg1 /dev/sdd1 # 扩容卷组 vg1
# 2.扩容逻辑卷
lvextend -L 10G /dev/vg1/lv1 # 10G:输入逻辑卷新的大小
lvextend -L +10G /dev/vg1/lv2 # +10G:逻辑卷新增10G空间
lvextend -l +100%FREE /dev/vg1/lv1 # 将剩余空间全部划入逻辑卷lv1
# 3.文件系统扩容(不扩容df查看的容量不变)
xfs_growfs /dev/vg1/lv1 # xfs文件格式使用此命令
resize2fs /dev/vg1/lv2 # ext3/ext4文件格式使用此命令
# 1.减小逻辑卷
lvreduce -L -5G /dev/vg1/lv1
# 逻辑卷lv1减少5G空间2.减小逻辑卷(移除卷组中的物理卷)
vgreduce vg1 /dev/sdc1
# 1.删除逻辑卷
lvremove /dev/vg1/lv1
# 2.删除卷组
vgremove /dev/vg1
# 3.删除物理卷
pvremove /dev/sdb1
15.9、LVM快照卷
# 1.创建快照卷
lvcreate -L l28M -s -n lv2-snap /dev/vg1/lv2 # -s:创建快照,-n:设置名字
# 2.格式化快照卷,创建文件系统
mkfs.xfs /dev/vg1/lv2-snap
# 3.挂载快照卷至本地目录(参考《7、挂载命令》)
mkdir /mnt/lv2-snap mount -o nouuid,ro /dev/vg1/lv2-snap /mnt/lv2-snap/ # -o ro:只读模式,因为xfs不识别uuid,所以加上nouuid
# 4.恢复文件 做完上述配置后,挂载点的文件可以拷贝出来恢复到原来的LV(/dev/vg1/lv2)里面(参考快照的工作原理)
15.10、扩容交换分区swap(相当于增加windows虚拟内存)
# 1.查看内存、交换分区
free -h
# free:查看内存信息
swapon -s # 查看swap
# 2.创建交换分区
gdisk /dev/sde
# 进入交互模式
n
# 新建分区
t
# 更改分区ID
82
# 更改分区ID为82(只有82才能被swap分区识别)
# 3.格式化分区,创建文件系统
mkswap /dev/sde1
# 4.开机自动挂载
blkid /dev/sde1
# 查看UUID
vim /etc/fstab
# 开机自动挂载,添加以下内容
UUID=xxxxxx swap swap defaults 0 0 # UUID挂载即使分区的顺序改变也不会导致错误
重启
# 5.删除交换分区
方法一:取消挂载
方法二:删除分区
16、服务管理(centos 7)
16.1、systemctl:系统服务管理器指令
# 例:
systemctl start firewalld # 开启防火墙服务
systemctl stop firewalld # 关闭防火墙服务
systemctl restart firewalld # 重启防火墙服务
systemctl list-unit-files # 查看开机自启动
systemctl enable firewalld.service # 设置开机自启
systemctl disable firewalld.service # 禁止开机自启
systemctl isolate multi-user.target # 切换为字符模式
systemctl isolate graphical.target # 切换为图形模式
systemctl get-default # 获取开机启动模式
systemctl set-default multi-user.target # 设置开机启动模式为字符模式
16.2、systemd-anlyzer:服务链接
# 例:
systemd-anlyze # 查看开机启动耗时
systemd-analyze blame # 查看每个服务的启动耗时
systemd-analyze critical-chain # 分析启动时的关键链
systemd-analyze critical-chain httpd.service # 显示指定服务的启动链
16.3、hostnamectl:主机名管理
# 例:
hostnamectl
hostnamectl set-hostname xxxxx # 设置主机名
16.4、localectl:本地信息管理(字符集管理)
# 例:
localectl # 查看本地化信息
localectl set-locale LANG=zh_CN.utf8 # 永久设置编码方式(需要退出终端再生效)
localectl set-keymap en_GB
localectl list-locales # 查看所有编码格式
# 登录乱码的实例,查看当前字符集
locale # 除LANG外,所有变量都是C(LC_ALL的优先级比LANG高)
# 修改LC_ALL变量为空,使其不生效
export LC_ALL=
# 永久设置字符集为英文utf8
localectl set-locale LANG=zh_CN.utf8
# 退出终端再重进使其生效
exit
# 也可以将下面两条命令先执行一遍,再写进 /etc/profile 文件的末尾
export LC_ALL=
export LANG=zh_CN.utf8
16.5、timedatectl:时间信息管理
# 例:
timedatectl # 查看当前时区、时间
timedatectl set-timezone Asia/Shanghai # 设置时区
timedatectl set-time YYYY-MM-DD # 设置年月日
timedatectl set-time HH:MM:SS # 设置时分秒
16.6、loginctl:会话信息管理
# 例:
loginctl # 查看当前会话列表
loginctl list-users # 查看当前登录用户
loginctl show-user lzp # 查看指定用户的信息
17、磁盘配额
17.1、 磁盘配额
- 1.挂载需要配额的分区。
- 2.创建需要配额的用户和用户组。
- 3.在分区上开启磁盘配额功能
mount -o remount,usrquota,grpquota /disk
# 重新挂载/disk分区,并加入用户和用户组的磁盘配额功能
# 永久生效要修改/etc/fstab,插入以下值:
/dev/sdb1 /disk ext4 defaults,usrquota,grpquota 0 0
- 4.建立磁盘配额文件
quotacheck -avu
-u:生成用户配额文件
-g:生成组配额文件
-m:强制生成配额文件
- 5.设置用户的配额
edquota -u user1
#修改文件,千万不要修改blocks和inodes项的值
- 6.启动配额
quotaon -avu /disk/
- 7.查询用户的配额
quota -uvs user1
- 8.测试
dd if/dev/zero of=/disk/testfile bs=1M count=60
# dd是磁盘对拷命令
# bs=1M表示1M一次,count=60表示60次
17.2、其他命令:
- 1.复制配额配置给其他用户:
edquota -p user1 -u user2
- 2.修改宽限时间
edquota -t
- 3.非交互式磁盘配额
setquota -u user3 40000 50000 8 10 /disk/
#setquota -u 用户名 容量软限制 容量硬限制 个数软限制 个数硬限制 分区名
18、CentOS 7网卡改名
18.1.CentOS 7网卡改名
# 修改网卡名
cd /etc/sysconfig/network-scripts/
mv ifcfg-ens33 ifcfg-eth0
vim ifcfg-eth0 # 修改以下两行
NAME="eth0"
DEVICE="eth0"
# 修改grub
vim /etc/sysconfig/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0" # 在此行增加最后两列
grub2-mkconfig -o /boot/grub2/grub.cfg # 生成启动菜单
# 验证是否修改成功
reboot # 重启系统
ifconfig
18.2.CentOS 7新增网卡
# 给虚拟机新增一块网卡
# 给新网卡设置IP地址
ifconfig # 查看网卡名,后续添加新的网卡会自动成为eth1
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-eth{0,1}
vim ifcfg-eth1 # 设置以下内容
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
NAME="eth1"
DEVICE="eth1"
IPADDR="192.168.47.131"
PREFIX="24"
GATEWAY="192.168.47.2"
DNS1="114.114.114.114"
19、启动引导与修复
19.1.系统运行级别
19.1.1.系统运行级别
运行级别 | 含义 |
---|---|
0 | 关机 |
1 | 单用户模式,可以想象为windows的安全模式,主要用于系统修复 |
2 | 不完全的命令行模式,不含NFS服务 |
3 | 完全的命令行模式,就是标准字符界面 |
4 | 系统保留 |
5 | 图形模式 |
6 | 重启动 |
runlevel:查看运行级别
N 3
N表示上一个级别
3表示当前级别
init 5:改变为运行级别5
19.1.2.系统默认运行级别:
vim /etc/inittab
id:3:initdefault:
19.1.3./etc/rc.d/rc.local文件:
CentOS 7中要使该文件生效需要给执行权限
# 作用:开机时运行其中的命令(最好使用绝对路径)
touch /var/lock/subsys/local
# 默认会 touch这个文件,每次系统启动时 touch这个文件,这个文件的修改时间就是系统的启动时间了。
# 例子:开机启动apache
/etc/rc.d/init.d/httpd start
19.2、启动引导程序
19.2.1./boot/grub目录:(不常用)
# 作用:
# 1.加载操作系统的内核
# 2.选择需要启动的系统
# 3.调用其他的启动引导程序,来实现多系统引导
19.2.2./boot/grub/grub.conf配置文件:(不常用)
配置文件中分区的表示方法:
[root@localhost ~]# vi /boot/grub/grub.conf
default=0 # 默认启动第一个系统。
timeout=5 # 5秒选择时间
splashimage=(hd0,0)/grub/splash.xpm.gz # grub启动时的背景图像文件的保存位置的
hiddenmenu # 隐藏菜单
#以上为 grub整体设置
title CentOS (2.6.32-279.el6.i686) #系统启动时在grub的启动菜单中看到的
root (hd0,0) # 启动程序的保存分区
kernel /vmlinuz-2.6.32-279.el6.i686 ro root=UUID=b9a7a1a8-767f-4a87-8a2b-a535edb362c9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet # 加载内核
initrd /initramfs-2.6.32-279.el6.i686.img # 指定了内存文件系统镜像文件的所在位置
#以上4行为一个整体,自动生成的
19.2.3.grub加密:(不常用)
# 作用:防止用户过于简单的修改root密码
# 例子:
[root@localhost ~]# grub-md5-crypt
Password:
Retype password:
# 输入两次密码
$1$Y84LB1$8tMY2PibScmuOCc8z8U35/
# 生成密钥
vi /boot/grub/grub.conf
default=0
timeout=5
password --md5 $1$Y84LB1$8tMY2PibScmuOCc8z8U35/ # 必须把密钥放在这里
19.3、系统修复模式
19.3.1.单用户模式(init 1)修复root密码:
# centos 6步骤:(需在服务器上操作,不能远程操作)
# 1.系统启动菜单中按e键
# 2.选择第二行,再按e键
# 3.输入空格1,回车 # 这样就进入了单用户模式
# 4.使用命令:passwd root # 修改密码
# 5.重启
#centos 7步骤:
# 1.系统启动菜单中按e键
# 2.找到"linux16"开头的这一行,在末尾添加"re.break console=tty0"
# 3.按"ctrl+x"启动
# 4.输入命令:"chroot /sysroot" # 将硬盘的/挂载到救援模式中
# 5.输入命令:"mount -o remount,rw /sysroot" # 重新挂载为可读写
# 6.输入命令:"echo 123 | passwd --stdin root" # 更改密码
# 7.输入命令:"touch /.autorelabel" # 重设SELinux安全标签8.输入命令:"reboot -f"
# 强制重启
2.光盘修复模式:
#步骤:(需在服务器上操作,不能远程操作)
# 1.修改BIOS从系统光盘重启
# 2.启动后选择第3个,回车
# 3.必须选择英文,然后进入shell
# 4.chroot /mnt/sysimage/ # 进入系统的根目录5.使用命令:passwd root修改密码
20、服务管理(centos 6)
20.1.查询服务自启动
chkconfig --list [服务名]
#例子:
chkconfig --list httpd
20.2.RPM包独立服务启动方式
# 1.
/etc/init.d/httpd start
# 2.
service 独立服务名 start|stop|restart|
# 例子:
service httpd start
20.3.RPM包独立服务自启动
# 1.chkconfig [--level 运行级别] [独立服务名] [on|off]
# 例子:
chkconfig --level 2345 httpd on
# 2.修改/etc/rc.local文件,将/etc/init.d/httpd start 添加进文件
# 3.ntsysv:图形界面自启管理
20.4.源码包服务启动方式
# 通过服务的安装位置,启动脚本 start
# 例子:
/usr/local/apache2/bin/apachectl start
20.5.源码包服务的自启动
# 修改/etc/rc.local文件
# 将/usr/local/apache2/bin/apachectl start 添加进文件
20.6.让源码包服务被服务管理命令识别
# 1.被service命令识别:
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/
# 2.被chkconfig命令识别:
vi /etc/init.d/apache,添加:
# chkconfig: 35 86 76
# description: source package apache
# 输入命令:
chkconfig --add apache
21、进程管理
21.1.ps:静态查看进程
# 语法1:
ps aux
# 语法2:
ps -le
# 选项:
a: 显示一个终端的所有进程,除了会话引线
u: 显示进程的归属用户及内存的使用情况
x: 显示没有控制终端的进程
-l: 长格式显示。显示更加详细的信息
-e: 显示所有进程,和-A 作用一致
--sort: 排序
# 例子:
ps -aux --sort=-%cpu
ps -aux --sort=-%mem
21.2.top:动态查看进程
# 语法:
top [选项]
# 例子:
top -b -n 1 > test.txt # 保存一次top的结果到文件
# 选项:
-d 秒数: 指定 top命令每隔几秒更新。默认是3 秒
-b: 使用批处理模式输出。一般和“-n”选项合用,用于把top命令重定向到文件中
-n 次数: 指定 top命令执行的次数。一般和“-b”选项合用
-p: 指定 PID。只查看某个PID 的进程
-s: 使 top在安全模式运行,避免在交互模式中出现错误
-u 用户名: 只监听某个用户的进程
# 交互模式:
?或 h: 显示交互模式的帮助
P: 以CPU使用率排序,默认就是此项
M: 以内存的使用率排序
N: 以PID排序
T: 按照CPU 的累积运算时间排序,也就是用TIME+项排序
k: 按照PID 号,给予某个进程一个信号。一般用于终止某个进程,信号9是强制终止的信号
r: 按照PID 号,给某个进程重设优先级(Nice)值
q: 退出top
21.3.pstree:查看进程依赖
# 语法:pstree [选项]
# 选项:
-p: 显示进程的PID
-u: 显示进程的所属用户
21.4.kill:杀死进程
# 语法:
kill [信号] PID
# 查看信号:
kill -l
-1:重启
-9:强制
# 例子:
kill -1 250 # 重启该进程
# 例子:
kill -9 250 # 强制关闭该进程
21.5.killall:根据进程名杀死进程
killall [选项] [信号] 进程名
# 选项:
-i: 交互式,询问是否要杀死某个进程
-I: 忽略进程名的大小写
# 例子:
killall -i sshd
21.6.pkill:根据进程名杀死进程
pkill [信号] [选项] 进程名
# 选项:
-t 终端号: 按照终端号踢出用户
# 例子:
pkill -9 -t pts/1 # 踢出pts/1的终端,可用w命令查看自己是那个终端
22、工作管理
22.1.放入后台
# 方法1:
命令 & # 放入后台执行
# 方法2:
ctrl+z # 放入后台暂停
22.2.jobs:查看后台
# 语法:
jobs [选项]
# 选项:
-l:查看PID
22.3.fg:放入前台
# 语法:
fg %工作号
# 例子:
fg %1
22.4.bg:放入后台
# 语法:
bg %工作号
# 例子:
bg %1
22.5.kill:杀死后台
# 语法:
kill %工作号
# 例子:
kill %1
22.6.nohup:后台命令脱离登录终端运行
# 语法:
nohup [命令] &
# 例子:
nohup find / -print > /root/file.log &
注:不使用此命令放入后台的程序会随着终端的关闭而关闭
23、系统资源查看
23.1.vmstat:监控系统资源
# 语法:
vmstat [刷新延时 刷新次数]
# 例子:
vmstat 1 3
23.2.dmesg:显示开机时内核检测信息
dmesg | grep CPU #查看CPU信息
dmesg | grep eth0 #查询第一块网卡信息
23.3.free:查看内存信息
# 语法:
free -h # 人性化输出
# 选项:
-b: 以字节为单位显示
-k: 以 KB为单位显示,默认就是以KB为单位显示
-m: 以 MB为单位显示
-g: 以 GB为单位显示
23.4.查看 CPU 信息
# 命令:
cat /proc/cpuinfo
23.5.查看本机登陆用户信息
# 命令:
w
# 命令:
who
23.6.uptime:查看负载
# 命令:
uptime
23.7.uname:查看内核信息
# 语法:
uname [选项]
# 选项:
-a: 查看系统所有相关信息;
-r: 查看内核版本;
-s: 查看内核名称。
23.8…查看系统发行版本
# 语法:
lsb_release -a
cat /etc/redhat-release || cat /etc/os-release
24、定时任务
24.1、at服务管理(默认是开的)
service atd start # 开启atd服务
chkconfig atd on # 开机自启atd服务
24.2、at访问控制(不常用)
vim /etc/at.deny
lzp # 在文件中写入用户名即可拒绝该用户使用at命令
# 注:
# 1./etc/at.allow默认不存在
# 2.如果/etc/at.deny和/etc/at.allow两个文件都不存在则只有root能使用at命令
24.3、at:一次性定时任务(不常用)
# 语法:
at [选项] 时间
# 选项:
-m: 当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
-c 工作号: 显示该 at工作的实际内容
# 时间:
HH:MM # 在指定的“小时:分钟”执行命令,例如:02:30
HH:MM YYYY-MM-DD # 在指定的“小时:分钟 年-月-日”执行,例如02:30 2018-07-25
HH:MM[am|pm] [month] [date] # 在指定的“小时:分钟[上午|下午][月][日]”执行, 例如 02:30 July 25
HH:MM[am|pm] + [minutes|hours|days|weeks] # 在指定的时间“再加多久执行”,
# 例如:now + 5 minutes,05am +2 hours
# 例子1:
at now +2 minutes # 回车
at> /root/hello.sh >> /root/hello.log # ctrl+d保存
# 例子 2:
at 02:00 2018-07-26 # 回车
at> /bin/sync # 回车
at> /sbin/shutdown -h now # ctrl+d保存
#在指定的时间关机。在一个 at任务中,是可以执行多个系统命令的
24.4、at管理命令(不常用)
atq # 查询当前服务器上的 at工作
atrm [工作号] # 删除指定的 at任务
重点!!!
24.5、crond服务管理 (默认是开的)
service crond restart # 开启crond服务
chkconfig crond on # 开机自启crond服务
24.6、crond访问控制
vim /etc/cron.deny
lzp # 在文件中写入用户名即可拒绝该用户使用cron命令
# 注:
# 1./etc/cron.allow默认不存在
# 2.如果/etc/cron.deny和/etc/cron.allow两个文件都不存在则只有root能使用crontab命令
24.7、用户crontab设置(只对该用户生效)
# 语法:
crontab [选项]
# 选项:
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务,如果有多个任务,只想删除一个,可以使用“crontab -e”
-u 用户名: 修改或删除其他用户的crontab任务。只有root可用
24.8、crontab的格式
# 语法
:crontab -e # 编辑空白文件
* * * * * 执行的命令 # 编辑所示格式
# 例子:
*/5 * * * * /bin/echo ”11” >> /tmp/test
5 5 * * 2 /sbin/shutdown -r now
30 3 1,10,15 * * /root/sh/autobak.sh
24.9、五个*的含义:
项目 | 含义 | 范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
24.10、时间的格式:
符号 | 含义 |
---|---|
* | 表示任何时间 |
, | 表示不连续的时间,如:8,10,12 |
- | 表示连续的时间:如:1-12 |
*/n | 表示间隔的时间:如:"*/10"表示每间隔10分钟执行一次(第一个*) |
例子
时间 | 含义 |
---|---|
45 22 * * *命令 | 在22点45分执行命令 |
0 17 * * 1命令 | 每周1的17点0分执行命令 |
0 5 1,15 * *命令 | 每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5命令 | 每周一到周五的凌晨4点40分执行命令 |
*/10 4 * * *命令 | 每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1命令 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
24.11、系统crontab设置(系统根据指定的用户执行)
# 配置文件:
/etc/crontab
# 例子:
vim /etc/crontab*/5 * * * * /bin/echo "11" >> /tmp/test # 写入该行至文件底部
24.12、.anacron(不重要,系统自动执行)
作用:服务器关机时,会存在未执行的crontab;当服务器开机时,会调用anacron来执行它们。
# 语法:
anacron [选项] [工作名]
# 选项:
-s:
# 开始anacron工作,依据/etc/anacrontab文件中的设定的延迟时间执行
-n:
# 立即执行/etc/anacrontab中所有的工作,忽略所有的延迟时间
-u:
# 更新/var/spool/anacron/cron.{daily,weekly,monthly}文件中的时间戳,但不执行任何工作
# 参数:
工作名: 是依据/etc/anacrontab文件中定义的工作名
25、日志管理
25.1.常见日志文件
日志文件 | 说明 |
---|---|
/var/log/cron/ | 记录了系统定时任务相关的日志 |
/var/log/cups/ | 记录打印信息的日志 |
/var/log/dmesg | 记录了系统在开机时内核自检的信息。也可以使用 dmesg命令直接查看内核自检信息。 |
/var/log/btmp | 记录错误登录的日志。二进制文件,不能直接vi查看,而要使用 lastb命令查看 |
/var/log/lastlog | 记录系统中所有用户最后一次的登录时间的日志。二进制文件,不能直接vi,而要使用 lastlog命令查看。 |
** | /var/log/mailog** |
/var/log/message | 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时首先要检查的就应该是这个日志文件。 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录。 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。二进制文件,不能直接vi,而需要使用last命令来查看。 |
/var/run/utmp | 记录当前已经登录的用户的信息。要使用w,who,users等命令才能查询 |
日志文件 | 说明 |
---|---|
/var/log/httpd/ | RPM包安装的apache服务的默认日志目录 |
/var/log/mail/ | RPM包安装的邮件服务的额外日志目录 |
/var/log/samba/ | RPM包安装的samba服务的日志目录 |
var/log/sssd/ | 守护进程安全服务目录 |
注:加下划线表示重要
25.2.日志文件格式:
- 第一列:事件产生的时间;
- 第二列:发生事件的服务器的主机名;
- 第三列:产生事件的服务名或程序名;
- 第四列:事件的具体信息。
25.3.rsyslogd服务的配置文件的格式
/etc/rsyslog.conf配置文件格式:
服务名称[连接符号]日志等级 日志记录位置
#例子:
authpriv.* /var/log/secure
#认证相关服务.所有日志等级 记录在/var/log/secure日志中
服务名称:
服务名称 | 说明 |
---|---|
auth(LOG_AUTH) | 安全和认证相关消息(不推荐使用authpriv替代) |
authpriv(LOG_AUTHPRIV) | 安全和认证相关消息(私有的) |
cron(LOG_CRON) | 系统定时任务 cront和at产生的日志 |
daemon(LOG_DAEMON) | 和各个守护进程相关的日志 |
ftp(LOG_FTP) | ftp守护进程产生的日志 |
kern(LOG_KERN) | 内核产生的日志(不是用户进程产生的) |
local0-local7(LOG_LOCALO0-7) | 为本地使用预留的服务 |
lpr(LOG_LPR) | 打印产生的日志 |
mail(LOG_MAIL) | 邮件收发信息 |
news(LOG_NEWS) | 与新闻服务器相关的日志 |
syslog(LOG_SYSLOG) | 由syslogd服务产生的日志信息 |
user(LOG_USER) | 用户等级类别的日志信息 |
uucp(LOG_UUCP) | uucp子系统的日志信息 |
连接符号:
连接符号 | 含义 |
---|---|
. | 代表只要该服务产生比日志等级高的(包含该等级)日志都记录下来。比如:“cron.info”代表cron服务产生的日志,只要日志等级大于等于info级别,就记录 |
.= | 代表只记录该服务产生所等于日志等级的日志,其他日志等级的都不记录。比如:“*.=emerg”代表任何日志服务产生的日志,只要等级是emerg 等级就记录。这种用法及少见,了解就好 |
.! | 代表不等于,也就是除了该日志等级的日志外,其他等级的日志都记录 |
日志等级:
等级名称 | 说明 |
---|---|
debug (LOG_DEBUG) | 一般的调试信息说明 |
info (LOG_INFO) | 基本的通知信息 |
notice (LOG_NOTICE) | 普通信息,但是有一定的重要性 |
warning (LOG_WARNING) | 警告信息,但是还不回影响到服务或系统的运行 |
err (LOG_ERR) | 错误信息,一般达到err等级的信息以及可以影响到服务或系统的运行了 |
crit (LOG_CRIT) | 临界状况信息,比err等级还要严重 |
alert (LOG_ALERT) | 警告状态信息,比crit还要严重。必须立即采取行动 |
emerg (LOG_EMERG) | 疼痛等级信息,系统已经无法使用了 |
* | 代表所有日志等级,比如:“authpriv.*”代表认证信息服务产生的日志,所有的日志等级都记录 |
none | 忽略这个日志服务,该服务的所有日志都不再记录 |
25.4.自定义日志
# 例子:
vim /etc/rsyslog.conf # 打开日志配置文件
*.crit /var/log/alert.log # 写入此句,将日志等级大于crit的日志都存储至alert.log
service rsyslog restart # 重启日志服务
cat /var/log/alert.log # 查看有无日志
25.6日志轮替
25.6.1.配置文件/etc/logrotate.conf
参数 | 参数说明 |
---|---|
daily | 日志的轮替周期是每天 |
weekly | 日志的轮替周期是每周 |
monthly | 日志的轮替周期是每月 |
rotate 数字 | 保留的日志文件的个数。0指没有备份 |
create | 建立新日志 |
compress | 日志轮替时,旧的日志进行压缩 |
create mode owner group | 建立新日志,同时指定新日志的权限与所有者和所属组。如 create 0600 root utmp |
mail address | 当日志轮替时,输出内容通过邮件发送到指定的邮件地址。如 mail shencClamp. net |
missingok | 如果日志不存在,则忽略该日志的警告信息 |
notifempty | 如果日志为空文件,则不进行日志轮替 |
minsize 大小 | 日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替 |
size 大小 | 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。如size 100k |
dateext | 使用日期作为日志轮替文件的后缀。如 secure-20180605 |
sharedscripts | 在此关键字之后的脚本只执行一次 |
prerotate | 在日志轮替之前执行脚本命令。endscript标示prerotate脚本结束。 |
postrotate | 在日志轮替之后执行脚本命令。endscript标示postrotate脚本结束 |
25.6.2.将自定义日志加入日志轮替
- 方法1:直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略,从而把日志加入轮替。
- 方法2:在/etc/logrotate.d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被“include”到主配置文件中,所以也可以把日志加入轮替。
# 例子:方法2
chattr +a /var/log/alert.log
# 先给日志文件赋予 chattr的 a属性,保证日志的安全
vi /etc/logrotate.d/alter
# 创建 alter轮替文件,把/var/log/alert.log加入轮替
/var/log/alert.log {
weekly #每周轮替一次
rotate 6 #保留 6个轮替日志
sharedscripts #以下命令只执行一次
prerotate #在日志轮替之前执行
/usr/bin/chattr -a /var/log/alert.log
#在日志轮替之前取消 a属性,以便让日志可以轮替
endscript #脚本结束
sharedscripts
postrotate #在日志轮替之后执行
/usr/bin/chattr +a /var/log/alert.log
#日志轮替之后,重新加入 a属性
endscript
sharedscripts
postrotate
/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null # 重新加载进程
endscript
#重启rsyslog服务,保证日志轮替正常
}
# 例子:把Nginx服务的日志加入日志轮替
/date/logs/nginx/access/access.log /date/logs/nginx/access/default.log {
# 假设Nginx 的日志放在/date目录下
daily
rotate 15
sharedscripts
postrotate
/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid) &>/dev/null
# 重启rsyslog服务
/bin/kill -HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid) &>/dev/null
# 重启Nginx服务
endscript
}
25.6.3.logrotate:手动执行日志轮替
# 语法:logrotate [选项] 配置文件名
# 选项:
如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
-v: 显示日志轮替过程。加了-v 选项,会显示日志的轮替的过程
-f: 强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有的日志进行轮替
# 例子:
logrotate ; logrotate -vf
版权声明:本文标题:①小白学习Linux之基础学习★ 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726688432h1013264.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论