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.主机名
/etc/sysconfig/network
?
/etc/hostname
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
cd -
cd ~
cd ../
cd ./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: 列出特殊字符
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
“-rw-rw-rw-”减去“-----w--w-”等于“-rw-r--r—”
“drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”
4.1.4.getfacl:查看文件或目录的ACL
getfacl [选项] [目录或文件]
getfacl /etc/hostname
4.15、setfacl:设置文件ACL规则
setfacl [选项] [文件]
-x:
-b:
-R:
-m:
setfacl -Rm u:lzp:rw- test
setfacl -x u:lzp test
4.2、帮助命令
4.2.1、man:显示联机帮助手册
man [选项] 命令
-f:
-k:
man 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
locate -i ~/m
5.4、find:在指定目录中搜索文件
find 搜索路径 [选项] 搜索内容
5.4.1 按照文件名搜索
-name:
-iname:
find . -name "*.txt"
5.4.2 按照文件大小搜索
-size [+|-]大小:
find /etc -size +2k
5.4.3 按照修改时间搜索
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索
find /var/log/ -mtime +30
find /var/log/ -mtime -7
5.4.4 按照权限搜索
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm -权限模式: 查找文件权限全部包含“权限模式”的文件
-perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件
find /etc -perm 777
5.4.5 按照文件类型搜索
-type d:
-type f:
-type l:
find /etc -type f
5.4.6 逻辑运算符
-a:
-o:
-not:
find . -name "*.txt" -o -name "*.pdf"
find . -size +2k -a -type f
find . -not -type f
5.4.7 -exec:调用外部命令
find .-type f -user root -exec chown tom {} \;
5.5、grep:搜索文件中的内容
grep [选项] "搜索内容" 文件名
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
grep -v "root" /etc/passwd
5.6、:将上一个命令的输出作为下一个命令的输入(管道符)
netstat -an | grep "ESTABLISHED" | wc -l
5.7、alias:别名
alias 别名='原命令'
例:
alias ser='service network restart'
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:
-t:
-x:
tar -cf all.tar *.jpg
tar -xf all.tar -C /tmp
tar -zcvf log.tar.gz linuxcool.log
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 -h now
shutdown -r now
shutdown -h 22:30
shutdown -c
shutdown +5 "System will shutdown after 5 minutes"
6.6、reboot:重启系统
reboot
7、网络命令和系统痕迹
7.1、配置IP地址
setup(centos6)| nmtui(centos7)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO="static"
IPADDR="192.168.248.133"
NETMASK="255.255.255.0"
GATEWAY="192.168.248.2"
DNS1="114.114.114.114"
DEFROUTE="yes"
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
ifconfig eth0 down
-v
-s
-a
7.3、ping:测试网络连接
ping [选项] IP
-c 次数:
ping 114.114.114.114
ping -c 1 192.168.1.0
7.4、netstat:网络状态查看
netstat [选项]
-a:
-n:
-p:
-t:
-u:
-l:
-r:
netstat -tuln
netstat -anp
7.5、mail:发送和接收电子邮件
安装此软件才能使用 :
yum -y install mailx
mail [选项]
-s
-a
echo "hello" | mail -s test test@linuxcool.com
mail
=======================================================================================
7.6、w:显示系统中正在登陆的用户信息
w
7.7、last:查看系统所有登陆过的用户信息
last
7.8、lastb:查看错误登陆的信息
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
另外,-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
mount /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/
umount /mnt/cdrom
8.1.2、挂载U盘
fdisk -l
mount -t vfat /dev/sdb1 /mnt/usb/
mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/
umount /mnt/usb/
8.1.3、挂载NTFS分区
wget http://www.tuxera.com/community/ntfs-3g-download/
tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz
cd ntfs-3g_ntfsprogs-2013.1.13
./configure
make
make install
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
mount -a
9、vim编辑器
9.1、vim的三种工作模式
↑、↓、←、→
h、j、k、l
^
$
gg
G
dd
3dd
yy
3yy
p
u
ctrl+r
r
R
dG
dgg
/lzp
?lzp
v
V
ctrl+v
%
mx
:marks
`x
>↓
<↓
{
}
w
b
e
ctrl + f
ctrl + b
a
A
i
I
o
O
:w
:w 新文件名
:q
:wq
:!
:q!
:wq!
:1,10d
:1,10s/old/new/
:1,10s/old/new/g
:%s/old/new/g
:g/ *
:g/^\s*$/d
:%s/
:%s/[ \t]*//
:%s/[ \t]\{2,3\}//
:set all
:set nu
:set nonu
:set nohlsearch
:set paste
:set nopaste
:set fileencoding
:set fileencoding=utf-8
vim ~/.vimrc
9.2、vim使用技巧
9.2.1.分屏编辑
vim -o abc.txt bcd.txt
vim -O abc.txt bcd.txt
9.2.2.windows中编写的脚本转换成linux
yum -y install unix2dos*
yum -y install dos2unix*
dos2unix test.sh
unix2dos test.sh
9.2.3.设置tab键缩进4字符
vim /etc/vimrc
set tabstop=4
set softtabstop=4
set shiftwidth=4
set ai
9.2.4.vim中的正则、扩展正则
97,124 s/\( \+\)/\1
:g/ *
:g/^\s*$/d
:%s/
:%s/[ \t]*//
:%s/[ \t]\{2,3\}//
\|
\+
\=
\{}
\{-n,m}
\{-,m}
\i
\I
\k
\K
\f
\F
\p
\P
\s
\S
\b
\e
\r
\t
\n
10、rpm软件包安装
10.1、默认安装位置
RPM包默认安装路径 | |
---|
/etc/ | 配置文件安装目录 | /usr/bin/ | 可执行的命令安装目录 | /usr/lib/ | 程序所使用的函数库保存位置 | /usr/share/doc/ | 基本的软件使用手册保存位置 | /usr/share/man/ | 帮助文件保存位置 |
10.2、RPM 包安装
rpm –ivh 包全名
-i
-v
-h
rpm -ivh httpd-2.2.15-53.el6.centos.x86_64.rpm
--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/my.cnf
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.org/centos/$releasever/os/$basearch/
gpgcheck=1
enabled=1
11.2、搭建本地光盘yum源
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/
cd /etc/yum.repos.d/
mkdir backup
cp *.repo backup
vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
11.3、yum 常用命令
yum repolist
yum list
yum list httpd
yum search ifconfig
yum provides ifconfig
yum info samba
yum -y install gcc
yum -y update httpd
yum -y update
yum remove samba
yum -y autoremove samba
yum clean all
yum makecache
yum install --downloadonly --downloaddir=/root/ ceph-osd
11.4、yum组管理命令
yum grouplist
yum groupinfo "Web Server"
yum groupinstall "Web Server"
yum groupremove "Web Server"
11.5、搭建阿里云yum源
https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.45b21b11bU6HxU
12、源码包安装软件
12.1、源码安装apache(示例)
cd /usr/local/src
wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.41.tar.gz
yum -y install gcc gcc-c++ zlib-devel pcre-devel apr-devel
tar -zxvf httpd-2.4.41.tar.gz
cd /usr/local/src/httpd-2.4.41
./configure --prefix=/usr/local/apache
make
make install
/usr/local/apache/bin/apachectl start
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、脚本安装软件包(不常见)
https://lnmp.org/install.html
12.4.1.用webmin管理linux
cd /usr/local/src
wget http://sourceforge.net/projects/webadmin/files/webmin/
tar -zxvf webmin-1.610.tar.gz
cd webmin-1.610
/usr/local/apache/bin/apachectl start
./setup.sh
Config file directory [/etc/webmin]:
Log file directory [/var/webmin]:
Full path to perl (default /usr/bin/perl):
Web server port (default 10000):
Login name (default admin):admin
Login password:
Password again:
The Perl SSLeay library is not installed. SSL not available.
Start Webmin at boot time (y/n):y
and login with the name and password you entered previously.
http://192.168.248.134:10000/
13、用户管理
13.1、用户信息文件/etc/passwd
root:x:0:0:root:/root:/bin/bash
13.2、影子文件 /etc/shadow (存放密码)
root:$6$9w5Td6lg$bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fI38RH15wzVoomff9isV1Pzd
cXmixzhnMVhMxbv0:15775:0:99999:7:::
13.3、组信息文件 /etc/group
root:x:0:root
=======================================================================================
13.4、添加、删除用户
useradd 选项 用户名
-u 550
-G lzp
-d /home/lzp
-s /bin/bash
-c "test"
-M
useradd -u 550 -G root -d /home/lamp1 -s /bin/bash lamp1
-r: 在删除用户的同时删除用户的家目录
userdel -r lamp1
13.5、设置用户密码
passwd [选项] 用户名
-l:
-u:
--stdin:
passwd
echo "123" | passwd --stdin user1
chage -d 0 user1
13.6、用户信息修改
usermod [选项] 用户名
-u 666:
-d /home/lzp:
-c "test":
-g lzp:
-G lzp:
-s /sbin/nologin:
-L:
-U:
usermod -s /sbin/nologin lzp
usermod -G testgroup lzp
13.7、切换用户身份
su [选项] 用户名
-:
-c ls:
su -
su -lzp
13.8、添加、删除用户组
groupadd [选项] 组名
-g GID:
groupadd LYY
groupdel
groupdel lyy
13.9、把用户添加进组或从组中删除
gpasswd [选项] 组名
-a 用户名:
-d 用户名:
gpasswd -a user1 grouptest
gpasswd -d user1 grouptest
14、权限管理
14. 1、查询、设置ACL 权限
getfacl 文件名
getfacl test.txt
setfacl [选项] [文件]
-x:
-b:
-R:
-m:
setfacl -Rm u:lzp:rw- test
setfacl -x g:lzp:5 test
setfacl -x u:lzp test
setfacl -b /test.txt
14.2、sudo:给普通用户赋予部分管理员权限
赋予用户的命令越简单,代表该用户的权限越大
赋予用户的命令越复杂,代表该用户的权限越小
visudo
测试:
visudo
user1 ALL=/sbin/shutdown –r now
su user1
sudo -l
sudo /sbin/shutdown -r now
visudo
aa ALL=/usr/sbin/useradd
aa ALL=/usr/bin/passwd
aa ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
14.3、文件的特殊权限(了解即可)
14.3.1.SetUID:用户执行这个文件时将以文件属主的身份执行
chmod u+s abc.sh
chmod 4755 abc.sh
14.3.2.SetGID:用户执行这个文件时将以文件属组的身份执行
chmod g+s ftest.sh
chmod 2755 ftest.sh
14.3.3.Sticky BIT:使普通用户不能删除其他用户建立的文件
chmod o+t dtest/
chmod 1755 dtest/
14.4、chattr:更改文件属性(不常用)
chattr [+-=][选项] 文件或目录名
+
-
=
i
a
chattr +a /etc/resolv.conf
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
15.2、du:查看占用空间
du [选项] [文件]
-a
-k
-m
-g
-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
15.6、基本磁盘管理
ls /dev/sd*
fdisk /dev/sdb
d:删除分区
n:新建分区
p:显示分区信息
q:退出不保存
w:保存修改
m:显示帮助菜单
gdisk /dev/sdb
partprobe /dev/sdb
mkfs.ext4 /dev/sdb1 或者 mkfs.xfs -f /dev/sdb1
mkdir /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1
15.7、LVM:逻辑卷管理(重点)
pvcreate /dev/sdb1
pvs 或 pvscan
parted /dev/sdb
·mklabel msdos
·yes
·quit
vgcreate vg1 /dev/sdb1
vgcreate vg1 /dev/sdc1
vgs 或 vgscan
lvcreate -L +20G -n lv1 vg1
lvcreate -l 100%FREE -n lv2 vg1
lvs 或 lvscan
mkfs.xfs /dev/vg1/lv1
mkfs.ext4 /dev/vg1/lv2
mkdir /mnt/lv1 /mnt/lv2
mount /dev/vg1/lv1 /mnt/lv1
mount /dev/vg1/lv2 /mnt/lv2
15.8、LVM扩容、缩小、删除
pvcreate /dev/sdd1
vgextend vg1 /dev/sdd1
lvextend -L 10G /dev/vg1/lv1
lvextend -L +10G /dev/vg1/lv2
lvextend -l +100%FREE /dev/vg1/lv1
xfs_growfs /dev/vg1/lv1
resize2fs /dev/vg1/lv2
lvreduce -L -5G /dev/vg1/lv1
vgreduce vg1 /dev/sdc1
lvremove /dev/vg1/lv1
vgremove /dev/vg1
pvremove /dev/sdb1
15.9、LVM快照卷
lvcreate -L l28M -s -n lv2-snap /dev/vg1/lv2
mkfs.xfs /dev/vg1/lv2-snap
mkdir /mnt/lv2-snap mount -o nouuid,ro /dev/vg1/lv2-snap /mnt/lv2-snap/
15.10、扩容交换分区swap(相当于增加windows虚拟内存)
free -h
swapon -s
gdisk /dev/sde
n
t
82
mkswap /dev/sde1
blkid /dev/sde1
vim /etc/fstab
UUID=xxxxxx swap swap defaults 0 0
重启
方法一:取消挂载
方法二:删除分区
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
export LC_ALL=
localectl set-locale LANG=zh_CN.utf8
exit
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
/dev/sdb1 /disk ext4 defaults,usrquota,grpquota 0 0
quotacheck -avu
-u:生成用户配额文件
-g:生成组配额文件
-m:强制生成配额文件
edquota -u user1
quotaon -avu /disk/
quota -uvs user1
dd if/dev/zero of=/disk/testfile bs=1M count=60
17.2、其他命令:
edquota -p user1 -u user2
edquota -t
setquota -u user3 40000 50000 8 10 /disk/
18、CentOS 7网卡改名
18.1.CentOS 7网卡改名
cd /etc/sysconfig/network-scripts/
mv ifcfg-ens33 ifcfg-eth0
vim ifcfg-eth0
NAME="eth0"
DEVICE="eth0"
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新增网卡
ifconfig
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
/etc/rc.d/init.d/httpd start
19.2、启动引导程序
19.2.1./boot/grub目录:(不常用)
19.2.2./boot/grub/grub.conf配置文件:(不常用)
配置文件中分区的表示方法:
[root@localhost ~]
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-279.el6.i686)
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
19.2.3.grub加密:(不常用)
[root@localhost ~]
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密码:
2.光盘修复模式:
20、服务管理(centos 6)
20.1.查询服务自启动
chkconfig --list [服务名]
chkconfig --list httpd
20.2.RPM包独立服务启动方式
/etc/init.d/httpd start
service 独立服务名 start|stop|restart|
service httpd start
20.3.RPM包独立服务自启动
chkconfig --level 2345 httpd on
20.4.源码包服务启动方式
/usr/local/apache2/bin/apachectl start
20.5.源码包服务的自启动
20.6.让源码包服务被服务管理命令识别
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/
vi /etc/init.d/apache,添加:
chkconfig --add apache
21、进程管理
21.1.ps:静态查看进程
ps aux
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
-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:查看进程依赖
-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
22、工作管理
22.1.放入后台
命令 &
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
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
chkconfig atd on
24.2、at访问控制(不常用)
vim /etc/at.deny
lzp
24.3、at:一次性定时任务(不常用)
at [选项] 时间
-m: 当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
-c 工作号: 显示该 at工作的实际内容
HH:MM
HH:MM YYYY-MM-DD
HH:MM[am|pm] [month] [date]
HH:MM[am|pm] + [minutes|hours|days|weeks]
at now +2 minutes
at> /root/hello.sh >> /root/hello.log
at 02:00 2018-07-26
at> /bin/sync
at> /sbin/shutdown -h now
24.4、at管理命令(不常用)
atq
atrm [工作号]
重点!!!
24.5、crond服务管理 (默认是开的)
service crond restart
chkconfig crond on
24.6、crond访问控制
vim /etc/cron.deny
lzp
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:
-n:
-u:
工作名: 是依据/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
服务名称:
服务名称 | 说明 |
---|
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
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”到主配置文件中,所以也可以把日志加入轮替。
chattr +a /var/log/alert.log
vi /etc/logrotate.d/alter
/var/log/alert.log {
weekly
rotate 6
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/alert.log
endscript
sharedscripts
postrotate
/usr/bin/chattr +a /var/log/alert.log
endscript
sharedscripts
postrotate
/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null
endscript
}
/date/logs/nginx/access/access.log /date/logs/nginx/access/default.log {
daily
rotate 15
sharedscripts
postrotate
/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid) &>/dev/null
/bin/kill -HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid) &>/dev/null
endscript
}
25.6.3.logrotate:手动执行日志轮替
如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
-v: 显示日志轮替过程。加了-v 选项,会显示日志的轮替的过程
-f: 强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有的日志进行轮替
logrotate ; logrotate -vf
|