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 6ext4(单个文件最大16TB

Centos 7xfs(单个文件最大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.xCentOS 7.x
启动指定服务service 服务名 startsystemctl start 服务名
关闭指定服务service 服务名 stopsystemctl stop 服务名
重启指定服务service 服务名 restartsystemctl restart 服务名
查看指定服务状态service 服务名 statussystemctl status 服务名
查看所有服务状态service --status-allsystemctl list-units
设置服务自启动chkconfig 服务名 onsystemctl enable 服务名
设置服务不自启动chkconfig 服务名 offsystemctl 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