命令格式:命令关键字 选项 参数 ls -l /etc (find /etc --name password)
帮助命令:man help info
cd 切换目录 cd .. cd-
绝对路径:从根目录 /etc/passwd
相对路径:从当前目录 ./ ../
[root@localhost ~]# root用户名 localhost主机名 ~当前所在目录 #root用户 $普通用户
ls查看目录下内容
选项:-a看隐藏文件(.文件名)
-l = ll 以长格式显示信息
-h 以人类可读的方式显示大小
-文件类型 -普通文件 d目录 b块设备文件 c字符设备文件 l链接文件 s套接字文件 p管道文件
文件管理命令:
touch 创建文件或更新时间戳
mkdir 创建目录 -p -v
rm 删除 -f -r(目录)-I
wc 统计 -c -w -l
cp 复制文件 -a -p(保持文件权限) -r
mv 移动或重命名
tree 查看目录树 -L
cat tac nl more less head -n(看文件前n行) tail -n(看文件后n行)(-f 排错(持续监控日志文件尾部变化))查看文件内容
which 查找命令绝对路径
find 按条件查找文件
查找系统中以bak结尾的文件并删除
find / -name *bak -exec rm -rf {} ;
whereis -b -m
locate -->updatedb(更新数据库) -->安装mlocat 查找速度比find快
grep 过滤 -i -v取反 -E支持扩展正则表达式()-o只显示要过滤的关键字 -A -B -w
压缩文件
gzip/gunzi=gzip -d -->.gz 1-9
bzip2/bunzip2=bzip2 -d -->.bz2
tar 制作或释放归档文件 -c -v -j(bz2) -z(ge) -f -x -C(解压指定路径)
通配符: ?任意一个字符 *任意所有字符
管道符:| 前一个命令的结果作为后一个命令的执行目标
正则表达式: ^以……开头
$以……结尾 grep基础正则表达式
|或 扩展正则表达式
sbin bin 放命令 boot 启动文件 dev 设备文件 etc 配置文件 home 普通用户家目录 lib lib64 库文件 media 挂载光盘 mnt 挂载可移动设备 proc 虚拟目录(内存里)root 超级用户家目录 run 服务启动目录 usr var 可变长文件
exit 退出登录,注销 ctrl+d
history 查看历史命令记录 调用!!上一条命令 !n 查看第n条命令 -c(.bash_logout)关机清空历史纪录
关机:shutdown -h now, init 0, halt,poweroff
runlevel 查看系统运行级别
重启:shutdown -r now,init 6,reboot
uname 查看系统信息 -a -r(内核版本)
查看centos系统版本cat /etc/redhat-release
Centos6与Centos7区别:内核版本不同6-->2.6 7-->3.10,默认文件系统不同6-->ext4 7-->xfs
Echo 打印 echo $?打印上一条命令的状态码用于检测上一条命令执行是否成功
vim 编辑器<--vi
yum -y install vim
命令模式 -->i a o s esc<--编辑模式-->:/ esc<-- 末行模式
命令模式:
dd 删除行(剪切 )
D 删除光标后内容
yy 复制
p 粘贴当前光标下一行
x 删除当前光标字符
u 撤销
Ctrl+r 恢复
gg 跳到首行
G 最后一行
w 移动单词
v 可视 x删除 y复制
Ctrl +v可视块
末行模式:
q q! w w! wq wq! x
/ 查找
:%s/old/new/g 替换
.vimrc vim的配置文件
编辑模式:补全出现过的单词 ctrl+n/p
软件包管理:
dpkg -->ubuntu suse debian -->apt apt-get
rpm -->redhat centos fedora -->yum yum install
rpm 管理rpm包 -i -v -h -a -q -e --nodeps
yum 自动解决rpm包之间的依赖关系 -y
install
update
remove
list
list installed
Info
clear all
makecache
provides 查看包
源码包(tar包)
解包 tar xf 包名 -C /usr/src
配置 ./configure --prefix=/usr/local/xxx(gcc gcc-c++)
编译 make
安装 make install
date 时间
data -s 修改时间 %s时间戳(19700101)
date +%Y%m%d 显示年月日
bc 计算器
vimdiff diff比较两文件不同
用户管理:
用户分类:超级用户(root) uid 0
普通用户 uid 1000
程序用户 uid 1-999
Userdel 删除用户 -r 删除家目录
useradd -u指定uid -g指定gid -d指定家目录位置-M指定不创建家目录 -G指定附加组
passwd -l -u
echo "123123" |passwd --stdin ***
usermod -c -d -g -L -U -e -G修改用户信息
chage 修改密码信息 -d 0
croupadd 添加用户组 -g
chgrp
chsh 或usermod更改用户的shell
who whoami id groups w
last lastlog
用户切换和授权
su - 改变环境变量 -c
sudo 授权
visudo(自动检测是否出错) =vim /etc/sudoers
用户组授权前加%
文件权限:
chmod u/g/o/a +/-/=rwx filename 修改文件权限
-0 r4 w2 x1
chown 修改文件归属 属主 属组
umask 查看或修改mask值
特殊权限位: SUID SGID SBIT
ACL 访问控制列表
getfacl 查看acl控制列表
setfacl -m u:***:rwx ***
-x 最后删除mask值
-b 还原RCL列表
特殊文件权限:
chattr +、- 修改
lsattr 查看
i 不能修改 passwd shadow
a 只能追加,不能修改 日志
只能root设置、修改
磁盘管理:
SATA SAS -->sd
磁盘逻辑结构:柱面、磁道、扇区(512字节)
MBR 主引导记录 位于磁盘的第一个扇区
dd if=/dev/sda of=/etc/mbr.bak bs=512 count=1
512:4*16=64 446引导记录(grub) 2校验字节
fdisk 划分磁盘分区 -l 查看
mkfs 创建文件系统 -b -I
mount 挂载
umount 卸载
df -Th 查看挂载
du -sh 查看磁盘大小
inode 记录文件原信息(硬链接inode相同,软链接inode不同类 似于快捷方式;删除原文件,对硬链接无影响,软链接不可以;目录不可以做硬链接,可以做软链接;硬链接不可跨文件系统,软链接可以;硬链接ln,软链接ln -s)
block 记录文件内容(默认1k,2k,4k)
superblock 记录系统inode信息
dumpe2fs
/etc/fstab 开机自动挂载
blkid 查看硬盘UUID
nmcli con show 查看网卡UUID
Partprobe partx 同步分区表
Parted 超过2T
GTP 2T
swap 交换分区(一般为内存2倍)
mkswap
swapon 激活交换分区 -s 查看现有交换分区
swapoff 关闭交换分区
uptime 查看系统负载
free -m 查看内存使用情况
启动流程:
1、BIOS加电自检
2、MBR引导
3、GRUB引导
4、加载kernel(内核)
5、启动init(centos 6)--->system(centos 7)
系统非正常关机下存放的碎片文件
修改密码:
Centos6 :e2e 空格1 回车再按b passwd reboot
Centos7 重启系统,按任意键中断启动加载器的倒计时;按e选定编辑条目,将光标移动到内核命令行(以linxu16开头的行)在行尾添加rd.break;按ctrl+x
使用这些更改启动,然后重新挂载mount – o remount,rw /sysroot;chroot /sysroot,然后修改密码;如果开启selinux,touch /.autorelabel;执行两次exit
RAID:磁盘冗余阵列
RAID0:条带模式,读写速度快,磁盘利用率高;没有数据冗余
RAID1:镜像模式,数据完全冗余,读速度快;磁盘利用率低 2*n 50%
RAID5:磁盘利用率想对较高,有数据冗余,允许一块硬盘损坏;写速度慢 3 n-1/n
RAID5+1:热备盘
RAID10:先做RAID1,再做RAID0
RAID6:两块校验盘
mdadm -C 创建新的RAID -l设置RAID级别 -n -x
LVM:逻辑卷,动态管理磁盘
lvextend 扩容后:
ext4 -->resize2fs
xfs -->xfs-growfs
计划任务管理:
一次性计划任务at --->atd
Systemctl start std
周期性计划任务crond(分,时,日,月,周)
Systemctl start crond
Crontab -e
Crontab -l
Crontab -r
命令绝对路径
最小单位:分
$()或’’先执行
进程管理:
程序:静态
进程:动态 -->PID(进程号) PPID(父进程号)
top 动态查看进程信息
cat /proc/cpuinfo |grep core查看内核
ps -aux -ef
kill 杀死PID进程 -9强制杀
killall 根据进程名杀
pkill 根据特殊条件杀
pgrep 根据特点条件查pid
pstree 进程树
nice
renice
优先级 -20 20 只有root可以设定负的优先级
&后台
jobs 查看后台任务
fg 1 调到前台
ctrl+z停止
bg 1在后台继续运行
sort排序
-n 按数字进行排序
-r 倒序
-k
time 统计命令执行时间
网络管理命令:
ip addr、ifconfig查看网卡信息IP地址
route
hostname 查看或修改主机名(7:/etc/hostname 6:/etc/sysconfig/network)
bash 打开新的shell
nmap 端口扫描
常见服务的端口号:
ftp 20/21 ssh 22 telnet 23 smtp 25 dns 53 dhcp 67/68 tftp 69 http 80 pop3 110 nfs(rpc) 111 ntp 123 imap 143 https 443 rsync 873 mysql 3306
redis 6379
ftp 文件传输协议:
20:数据
21:控制
连接方式:
主动连接
被动连接
传输模式:
文本模式
二进制模式
用户:
匿名用户:ftp anonymous
本地用户:Linux系统中
DNS域名解析协议
tcp 53 主从服务器数据同步
udp 53 域名解析
完整域名 www.baidu.com
. 根域
.com 顶级域 .cn .com .org .edu
.baidu 二级域
www 主机头
hosts 早期用来做域名与IP映射
DNS查询方式:
递归:C-S
迭代:S-S
DNS解析:
正向解析
反向解析:反垃圾邮件
知名DNS服务器:
114.114.114.114
8.8.8.8
Linux:
bind
named
/etc/named.conf
/var/named/
hosts文件优先级高于DNS
命令(bind-utils):
host
nslookup
dig
解析记录:
SOA授权域
NS管理这个域—>DNS服务器自己的域名
MX邮件交换记录
A域名映射IP
CNAME别名
*泛解析
PTR反向解析记录
域名服务器分类
主域名服务器
从域名服务器
缓存域名服务器
CDN内容分发网络
缓存
流程:
1. 客户端发送域名解析请求到本地DNS服务器;
2. 本地DNS服务器将请求转发给CDN DNS 服务器;
3. CDN DNS解析后将服务器地址返回给客户端;
Shell 脚本
面向过程 动态语言 解释型 弱类型
变量
规则:只能以字母和下划线开头,包括字母、数字、下划线。区分大小写
规范:1、变量名要有意义
2、采用驼峰式命名 SameName sam_name
定义变量
变量名=变量值
调用变量
$变量名
打印变量值:
echo $变量名
printf $变量名
printf “$a ”
删除变量:
unset 变量名
declare -i 变量名 声明该变量为整数型 +i取消声明
declare -r变量名 声明只读变量
环境变量(全局变量)
env 查看系统环境变量
/etc/profile-->/etc/profile.d/*.sh
~/.bash_profile -->~/.bashrc-->/etc/bashrc
export 变量名 将该变量导出为全局变量
自定义变量(局部变量)
预定义变量
$0 保存脚本的路径和名称
$1 $2 $3 … 位置变量,不交互传参
$* 保留传入的所有参数(整体)
$@ 保留传入的所有参数(单个)
$# 传入参数的个数
$$ 保存脚本的pid
$? 保存上一条命令执行状态码
#! 幻数-->指定解释器
注释
执行代码
执行脚本方式:
1、bash或sh脚本名执行,在子shell中执行结束后退回到父shell
2、相对路径或绝对路径执行,必须有执行权限chomd +x
3、Source或.执行,在当前shell下执行
符号:
单引号,原样输出
双引号,解析变量
赋值时,如果有空格,就用引号引起来
$()或``先执行括号中命令,拿到命令结果
shell计算:
$(())整数计算,判断
let 整数计算
expr 整数计算 *(乘号要转义)字符与字母要报错
bc
$[]
条件测试
[ 条件 ] 或 test 条件测试
文件测试:
-f 是否是文件
-d 是否是目录
-e 文件或目录是否存在
-s 是否是一个空文件 非空为真
整数测试:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
字符串测试:
== 字符串相等
!=
-z 测试是否为空字符串 非空为假
逻辑运算符:[[ ]]
&& 或 -a 与
|| 或 -o 或
! 非
case 变量 in
条件1)
执行代码
;;
条件2)
执行代码
;;
for i in `seq 100` ;do
if [ $((i%2)) -eq 0 ];then
sum=$((i+sum))
fi
done
echo $sum
获取字符串长度:
echo $name|wc -L
echo ${#name}
echo length $name
字符串截取:
echo ${name:起始位置:个数}
echo $name|cut -c 起始字符数-结束字符数
字符替换:
abcABC123ABCabc
echo ${name#a*C} 123aABCabc
echo ${name##a*C} abc
echo ${name%a*C} abcABC123ABCabc
echo ${name%A*c} abcABC123
echo ${name%%A*c} abc
echo ${name/abc/456}456ABC123ABCabc
echo ${name//abc/456}456ABC123ABC456
正则表达式:
基础正则表达式:grep egrep sed awk
.匹配任意一个字符
*匹配前一个字符或表达式任意次
^匹配以…开头
$匹配以…结尾
[]匹配括号中任意字符 [^0-9] 取反 [a-z]
{n,}匹配前一个字符或表达式最少n次
{,m}匹配前一个字符或表达式最多m次
{n,m}匹配前一个字符或表达式n到m次
扩展正则表达式:egrep = grep -E awk sed -r
+匹配前一个字符或表达式1次或1次以上
?匹配前一个字符或表达式0次或1次
()分组
|或
sed流编辑器
sed 选项‘操作 地址’文件
-r 支持扩展正则表达式
-i 修改文件
-n 安静模式,只输入处理的行
i 插入一行
a 追加
d 删除
c 整行替换
s 字符串替换
p 打印
echo http://www.baidu.com/1.mp3|sed -nr ‘s#(.*)//(.*)/(.*)#2#gp’
ip a show eno16777736|sed -n "3p"|sed -nr 's#(.*) (.*)/(.*)#2#p'
awk
默认分隔符为空格 -F指定
内置变量
NF处理的列数 $1代表第一段 $0整行
NR处理的行数
cut 切割
-c切割字符
-b按字节切割
-d指定分割符
-f指定段数
uniq 去重(相邻)
-c 统计重复出现的行
查看系统中命令使用最多的
history |awk '{print $2}' |sort |uniq -c |sort -nr |head
ping
-c 指定发送数据包
-w 发包的时间间隔
-i 等待多上时间认为发送失败
脚本:
1、统计192.168.2.0/24内有多少主机存活?
2、批量创建10个用户,可以为这些用户设置统一的默认密码;强制用户首次登陆修改密码;
3、统计当前内存使用情况,如果内存使用率超过80%,打印报警
awk ‘{print $1}’ /etc/httpd/logs/access_log |sort|uniq -c|sort -nr
awk ‘{array[$1]++} END{for (i in array) print i,array[i]}’ /etc/httpd/logs/access_log
YoLa.2575+
数组:
array=(a b c d)
echo ${array[0]} a
unset array[]
echo ${array[*]:1:2}
echo ${array[*]/a/b}
web 2.0
http 1.1 80 https 443
静态网站:没有交互,没有程序,没有MySQL
1、每个页面有一个特定的URL地址,不含?或&等特殊符号
2、每个网页都是独立的实体文件
3、内容是固定不变的,容易被搜索引擎收录(优点)
4、网页没有数据库支持,在制作和维护方面工作量较大,当网站数据量比较大时,
5、交互性差,
动态网站:交互的,有程序(php,java,python,perl)
http状态码 200
301
401
403
404
500
502
LAMP Linux Apache(7 2.4 6 2.2) MySQL/Mariadb php/python/perl
虚拟主机:
基于IP
基于域名
基于端口
IO
< 标准输入 0
> 标准输出(覆盖) 1
>> 标准输出(追加)
2>标准错误 2
2>>
&>混合输出