命令整理command

selinux 安全上下文
chcon -R --reference=/var/www /webroot/
查文件标记
ls -Zd /var/www
开放非标注端口
semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 8909
-a :添加
-t:类型
-p:协议

yum软件组管理
• 使用RHEL7软件仓库的预设分组
– yum groups list [hidden] [组名]...
– yum groups info [组名]...
– yum groups install [组名]...
– yum groups remove [组名]

查找虚拟主机安装组
yum groups list hidden |grep -i "virt"
转化语言
LANG= yum groups list hidden

安装虚拟化服务器平台
• 主要软件组
Virtualization\ Client #虚拟化客户端
Virtualization\ Platform #虚拟化平台
Virtualization\ Hypervisor #虚拟化管理器
Virtualization\ Tools #虚拟化工具

[root@localhost 桌面]# yum -y groups install 
Virtualization\ Client 
Virtualization\ Platform 
Virtualization\ Hypervisor 
Virtualization\ Tools

• 查看KVM节点(服务器)信息
– virsh nodeinfo
• 列出虚拟机
– virsh list [--all]
• 查看指定虚拟机的信息
– virsh dominfo 虚拟机名称
• 运行|重启|关闭指定的虚拟机
– virsh start|reboot|shutdown 虚拟机名称
• 强制关闭指定的虚拟机
– virsh destroy 虚拟机名称
virsh autostart nsd #设置开机自起动
virsh autostart --disable nsd #关闭自起动

1.快速创建qcow前端盘
• qemu-img 通过 -b 选项复用指定后端盘
– qemu-img create -f qcow2 -b 后端盘 前端盘

cd /var/lib/libvirt/images/

qemu-img create -f qcow2 -b nsd.qcow2 new01.qcow2

qemu-img info new01.qcow2

2.常见新的虚拟机描述文件

cd /etc/libvirt/qemu/

cp nsd.xml new01.xml

vim new01.xml

修改name、删除UUID整行、修改磁盘文件路径指定前端盘、删除MAC整行

3.导入新的虚拟机

virsh define /etc/libvirt/qemu/new01.xml

获取UUID
uuidgen 
统计目录大小
du -sh
-s 大小
-h 大小单位

挂载虚拟盘:
先安装 yum -y install libguestfs-tools-c.x86_64
guestmount -a 虚拟机磁盘路径 -i /mnt

远程复制:
scp -r tools [email protected]:/root/ 后输入密码

创建yum仓库
createrepo /root/tools/other/

后台执行
命令 & (oneko &)

统计目录
du -sh /root
杀死所有进程
killall oneko
查看安装包清单
rpm -ql oneko
软连接
– 软连接 --> 原始文档 --> i节点 --> 文档数据
– ln -s 原始文件或目录 软连接文件
ln -s /etc/passwd
硬连接
– 硬连接 --> i节点 --> 文档数据
– ln 原始文件 硬连接文件
ln /etc/passwd
查看文件硬盘位置编号I节点
ls -i /etc/passwd
zip 压缩
zip [-r] /压缩后名字 /源文件 /源文件
unzip name.zip -d /opt

日期
date +%F
date +%R
date +"%Y-%m-%d %H:%M:%S"

查看网络接口信息
netstat -anptu
-a:显示所有接口信息
-n:以数字方式显示
-p:显示进程信息
-t:tcp连接
-u:udp连接

进程管理:
进程树
pstree -ap lisi
进程快照:显示当前进程状态
ps aux :列出正在运行的说有进程
-elf :列出正在运行的说有进程
进程排序:
top [-d 刷新时间]
top -d5
按大写的P cpu排序
按大写的M 内存排序
查进程PID
pgrep -l log

进程控制:
Ctrl + z 挂起当前进程
bg 激活后台挂起的任务
jobs 查看后台任务
fg 后台任务恢复到前台

杀进程
kill -9 PID
killall -9 进程名
强制提除用户
killall -9 -u lisi

用户检查
users,who,w
last -2 最近2次登陆成功
lastb -2 最近2次登陆失败

日志查看 
journalctl -u httpd -p 6

模式切换
systemctl isolate multi-user.target 文本模式
systemctl isolate graphical.target 图形模式
查看默认级别
systemctl get-default
设置级别
systemctl set-default multi-user.target
systemctl set-default graphical.target
统计行数
wc -l /etc/passwd

find /var/log/ -mtime +90 -exce rm -rf {} \;
+90 90天之前
-90 90天之内
-maxdepth 目录层次

同步控制 
rsync 选项 源文件 目标文件
-n 测试同步
--delete 删除目标文件夹内多余的文档
-a :归档模式,全部复制
-v:显示详细操作信息
-z 传输过程启用压缩/解压

rsync -avz --delete /dir1/ /nsd/
测试
rsync -navz --delete /dir1/ /nsd/
rsync+ssh
rsync -avz --delete /opt/ [email protected]:/opt/

公私钥: 
ssh-keygen 生成公私匙
ls /root/.ssh 查看钥匙
ssh-copy-id [email protected] 拷贝钥匙到目标
ssh [email protected] 验证

iscsiadm -m discovery -t st -p server0

查询仓库中哪一个软件包,可以产生一个文件

yum provides */pxelinux.0

rpm -ql syslinux | grep pxelinux.0

shall 快捷健
ctrl+l
ctrl+c
ctrl+a 行首
ctrl+e 行尾
ctrl+w


改历史记录条数

history -c 清历史记录

~/.bash_history //清空记录文件

重定向多个结果
ls /etc/hosts ddd >log1 2>log2

PS1=KENJI 显示用户名

隐藏输入密码
stty -echo
打开隐藏输入
stty echo

反引号 `` 获取命令结果

env 查看所有变量

expr、$[ ]、let等整数运算工具
expr 数字1 符号 数字2
[root@svr5 ~]# X=1234 //定义变量X
[root@svr5 ~]# expr $X + 78

[root@svr5 ~]# X=1234 
[root@svr5 ~]# echo $[X+78]

不显示结果
[root@svr5 ~]# X=1234 
[root@svr5 ~]# let y=X+22

小数运算 scale保留位数
echo 'scale=4;12.34*5.678' | bc

判断:
test [ 表达示 ]

[ -z $ewrw ];echo $? 判度是否为空

a ; b 执行a后执行b
a && b a执行成功后执行b
a || b a执行失败后执行b

1)-eq 比较两个数是否相等
2)-ne 比较两个数是否不相等。
3)-gt 比较前面的整数是否大于后面的整数。
4)-ge 比较前面的整数是否大于或等于后面的整数。
5)-lt 比较前面的整数是否小于后面的整数。
6)-le 比较前面的整数是否小于或等于后面的整数。
7)提取当前登录的用户数,比较是否超过5。

1)-e 判断对象是否存在(不管是目录还是文件)
2)-d 判断对象是否为目录(存在且是目录)
3)-f 判断对象是否为文件(存在且是文件)
4)-r 判断对象是否可读
5)-w 判断对象是否可写
6)-x 判断对象是否具有可执行权限

ping -c4 -i0.1 -W1 $1 &>/dev/null
4次 0.1秒 1秒
随机数
$RANDOM

for i in seq 5 获取5个循环,可用变量

while :
do
let i++
done

判断次数越多就用CASE,可用| 来或者,不能比较大小,空
case $1 in
-n|--new)
命令
命令
命令;;
-r|remov)
命令
命令
命令;;
*)
命令;;
esac

函数名() {
命令序列
.. ..
}

[root@svr5 ~]# mycd(){ //定义函数

mkdir $1
cd $1
}
[root@svr5 ~]# mycd /abc //调用函数
[root@svr5 ~]# mycd /360 //调用函数

设置颜色
echo -e "\033[36mok\033[0m"
-extend 扩展
3X 字体颜色
4X 背景色
0X 样式
1 加粗
4 加下划线

echo -e "\033[4;44;36mok\033[0m"

ssh 192.168.4.$1 "mkdir 2.txt"

continue
break
exit

字符串截取及切割

子串截取的三种用法:
${var:起始位置:长度} 使用${}方式截取字符串时,起始位置是从0开始的(和数组下标编号类似)
expr substr "$var" 起始位置 长度
echo $var | cut -b 起始位置-结束位置

echo $var | cut -b 1,3,5

echo ${#Phone} 统计字符串长度

echo ${x:$[RANDOM%62]:1} 随机密玛
字符串拼接
tmp=${x:$[RANDOM%62]:1}
passwd=${passwd}$tmp

路径分割:
取目录位置:dirname "字符串"
取文档的基本名称:basename "字符串"
子串替换的两种用法:
只替换第一个匹配结果:${var/old/new}
echo ${x/${x:5:4}/****}

替换全部匹配结果:${var//old/new}
字符串掐头去尾:
从左向右,最短匹配删除:${变量名#关键词}
从左向右,最长匹配删除:${变量名##
关键词}
从右向左,最短匹配删除:${变量名%关键词}
从右向左,最长匹配删除:${变量名%%关键词
}

重命名
mv $i ${i/.txt/.tat}
mv $i ${i%.tat}.xtt

变量默认值
echo ${x:-aa}

建立数组的方法:
格式1,整体赋值:数组名=(值1 值2 .. .. 值n)br/>格式2,单个元素赋值:数组名[下标]=值
查看数组元素的方法:
获取单个数组元素:${数组名[下标]}
获取所有数组元素:${数组名[*]}
获取连续的多个数组元素:${数组名[@]:起始下标:元素个数}
截取数组元素值的一部分:${数组名[下标]:起始下标:字符数}

非交互
mail -s err root << EOF
JJJ
JJJJ
JJSWW
JWEK
EOF

安装expect
yum -y install expect
expect << EOF
set timeout 30
spawn ssh 192.168.4.15
expect "continue" {send "yes\n"}
expect "password" {send "123456\n"}
expect "#" {send "touch /a.txt\n"}
expect "#" {send "exit\n"}
EOF

1.continue的问题
统一删除 rm -rf /root/.shh/known_hosts 或 ~/.shh/known_hosts
2.超时时间
set timeout 30
3.最后一行不执行

正则

^ 行首
$ 行尾
[] 集合
[^] 集合取反
. 任意单个字符

匹配前一个字符出现了任意次
.* 任意所有
{n,m} 匹配前一个字符N到M次
{n} 匹配前一个字符N次
{n,} 匹配前一个字符N次以上,包括N次
() 保留

扩展

最少匹配一次
? 最多匹配一次
{n,m} 匹配N到M次
() 组合为整体,保留
| 或者
\b 单词边界
^$ 空白行
[:alnum:] = [0-9A-Za-z]
[:alpha:] = [A-Za-z]
[:blank:] = space and tab
[:digit:] = 0 1 2 3 4 5 6 7 8 9
[:lower:] = a b c d e f g h i j k l m n o p q r s t u v w x y z
[:punct:] = ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
[:upper:] = 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f

http访问
curl http://127

扩展正则(简化节本,扩展新的)

{2,5} = {2,5}
() () 保留(复制)

  • 任意次 ?前面的字符出现了0或1次
    +前面的字符出现了至少1次
    () 整体
    | 或者
    \b 单词边界

正则和扩展正则优缺点
扩张正则:简单,兼容性差
基本正则; 麻烦,兼容性强

sed文本处理工具的用法:
用法1:前置命令 | sed [选项] '条件指令'
用法2:sed [选项] '条件指令' 文件.. ..

缺少条件为全文处理
sed 默认显示全文,
指令:

增 a
删 d
改 s
sed 's/old/new' 文件 (替换第一个)
sed 's/old/new/g' 文件 (替换所有)
sed 's/old/new/2' 文件 (替换第二个)
sed '3s/1011/7077/2' 234pass 第三行替换
sed '3s/1011//2' 234pass 第三行删除
S的替换符号可以用任意字符
sed 's:/bin/bash:/sbin/sh:' 234pass
sed 's#/bin/bash#/sbin/sh#' 234pass
查 p

sed -n '3p;5p;8p' /etc/passwd
sed -n '3,5p' /etc/passwd 打印3~5行

sed 'd' /etc/passwd 删除所有

a 在指定的行之后追加文本
sed '2a xxxx' 234pass 
i 在指定的行之前插入文本
sed '2i xxxx' 234pass 
c 替换指定的行
sed '2c xxxx@@@' 234pass
() 保留(复制)
() 保留(复制)
\1 粘贴第一个
\2 粘贴第二个
例子:
abcdabcdabcd123412341234
grep "(abcd)\1\1(1234)\2\2"

把第一个字母和最后一个字母对换
sed -r 's/^(.)(.*)(.)$/\3\2\1/' wenjian
条件:
1.行号 3d 8d 36d
2./正则/
sed -n '/root/p' /etc/passwd

输出第4~7行
sed -n '4,7p' rclocal.txt
输出第4行和第7行。
sed -n '4p;7p' rclocal.txt
输出第2行及之后的3行。
sed -n '2,+3p' rclocal.txt
输出奇数行。
sed -n 'p;n' rclocal.txt
输出偶数行。
sed -n 'n;p' rclocal.txt
从第5行输出到最后一行。
sed -n '5,$p' rclocal.txt
输出文本的行数。
sed -n '$=' rclocal.txt

删除不包括“init”的行
sed '/init/!d' rclocal.txt
删除文件的最后一行
sed '$d' rclocal.txt
删除文件中的空行
sed '/^$/d' blankline.txt

解除/etc/rc.local文件第3~5行的注释(去掉开头的 # )
sed '3,5s/^#//' /etc/rc.local
将/etc/rc.local文件的第6~7行注释掉(行首添加 # )
sed '6,7s/^/#/' /etc/rc.local

插入多行
sed '2c xx\nyy' a.txt

r 读取文件内容
sed 'r /etc/hostname' a.txt
w 另存为
sed '2w /qq.txt' a.txt

h 覆盖 复制
H 追加 复制
g 覆盖 粘贴
G 追加 粘贴

sed '2h;4g' a.txt
sed '2H;4G' a.txt

-r 扩展正则 
-n 屏蔽默认输出
-i 参数确定后再加,会保存文件

动态查看文件
tailf 文件

awk [选项] '条件{指令}' 文件

awk '/正则/{指令}' 文件
条件可以没有,就是默认所有
指令可以没有,就是默认打印
不可以同时没有条件和指令
awk 默认使用空格或TAB作为分隔符号
-F指定分隔符
NR 当前行的行号
NF 当前行的列数
打印常量(字符串需要引号)
awk '{print "dachui"}' /etc/passwd
awk '{print "第"NR"行","有"NF"列"}' /etc/passwd

awk 'BEGIN { FS = ":" ; OFS = "~~" } {print FNR,$1,$2}'

free 查内存信息
top 查CPU average 1分,5分,15分钟
uptime 查CPU信息
双核时 值是1时,为50%
四核时 值是2时,为50%

网卡流量 ifconfig eth0 |awk '/RX p/{print $xx}' 
RX 接收流量
TX 发送流量

elif [[ ${VMNUM} =~ [a‐z] ]]; then 
echo "You must input a number." 
=~判断属于,需放在[[]]里

$7":"$8>="13:30" && $7":"$8<="14:30"

awk 'BEGIN{} 条件{} END{}' 文件
所有指令的都需要放到{}里
在begin{} 里的指令,是在读文件之前,执行1次
条件中的{}指令执行N次
END{}是最后执行

awk -F: 'BEGIN{print "用户名\tUID\t家目录"} {print $1"\t"$3"\t"$4} END{print "总用户量"NR}' /etc/passwd 
变量
awk 'BEGIN{X=2;Y=4;print XY}' 
常量
awk 'BEGIN{print 2
3}'
计算数量
awk 'BEGIN{X=0} /bash/{x++} END{print x}' /etc/passwd
变量可以不定义,就直接用(默认为0) 
awk ' /bash/{x++} END{print x}' /etc/passwd

awk -F: '/root/' /etc/passwd
平配第全行

awk -F: '$1~/root/' /etc/passwd
平配第一列

awk -F: '$7!~/bash$/' /etc/passwd
匹配第七列不是bash结尾的

正则(模糊匹配,包含即可)

字串和数字比较== != < <= > >=

awk -F: '$1=="root"' /etc/passwd
字符串需加引号
awk -F: '$3 <=10' /etc/passwd

逻辑判断 && ||
awk -F: '$3>10 && $3<20' /etc/passwd

awk -F: '$3==0 || $3==1000' /etc/passwd

算术运算
能被7整除或包含7的数(1-200)

seq 200 |awk '$1%7==0'

seq 200 |awk '$1%7==0 || $1~/7/'
$1~ 包含,模糊匹配

awk '/^(127|192)/' /etc/hosts

从passwd提取所有能登陆的用户名
x=awk -F: '/bash$/{print $1}' /etc/passwd
从shadow里面把他们的密码取出来

for i in $x
do 
pass=grep "$i" /etc/shadow
echo "$pass" |awk -F: '{print $1,$2}'
done

awk 支持if语句
if(判断){指令}
if(判断){指令}else{指令}
if(判断){指令}else{指令} if(判断){指令}

awk 'BEIGIN() 条件{} END{}' 文件

统计系统用户和普通用户分别是多少
awk -F: '{}' /etc/passwd

if($3>=1000){x++}else{y++}

awk -F: 'BEGIN{print "用户名 家目录 解释器"} {print $1,$5,$6} END{print "总量:"NR}' /etc/passwd

awk -F: 'BEGIN{x=0} /bash$/{x++;print $1} END{print x}' /etc/passwd

1.正则
/正则/ 对整形匹配
$n~// 对某一行匹配
$1~/root/ 对第一列匹配
2.字符和数字的比较(精确匹配)
awk -F: '$3>=1000{print $1}' /etc/passwd 
awk -F: '$1=="root"{print $3}' /etc/passwd
3.逻辑运算 && ||
awk -F: '$3>=1000&&$3<=2000'
awk -F: '$3==0 || $3==1000'
4.awk算术运算,支持小数点
awk 'BEGIN{x=0;print x+8}' 
awk 'BEGIN{x=0;print x-8}'
awk 'BEGIN{x=0;print x%8}' 
5.awk支持if或while
awk '条件{} END{}' /etc/passwd
if($3>=){x++}else{y++} 填入条件后的{}里面

whicl 统计词频
awk -F: '{i=1;while(i<=NF){if($i~/root/){x++};i++}} END{print x}' /etc/passwd

awk 支持数组,数组下标支持字符串
awk 'BEGIN{x[0]=1;x[1]=2;print x[0],x[1]}'
x["haha"]=2

ab -c 100 -n 10000 http://172.25.0.11/
模拟100个人,同时访问网站

统计有多少人访问多少次
awk '{IP[$1]++} END{for(i in IP){print i,IP[i]}}' /var/log/httpd/access_log |awk '$2>=500{print $1}'

for(i in IP){print i,IP[i]} i取IP的下标

1.一键部署[nginx源码包,麻烦]
vim test.sh
#!/bin/bash
yum -y install gcc pcre-devel openssl-devel
tar -xf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure
make
make install

验证: ls /usr/local/nginx/有内容

3.监控脚本(awk过滤):
cpu负载: uptime 2核CPU满值是2
4核CPU满值是4
网卡流量: ifconfig eth0
RX是接受的数据流量
TX是发送出去的数据流量
内存剩余:free
根分区的剩余容量:df
当前计算机的账户数量: wc -l /etc/passwd
登陆了几个人:who
当前开启的进程数量: ps aux |wc -l
已经安装了多少软件: rpm -qa |wc -l

4.检查/var/log/secure看看有没有人尝试破解密码

awk '/Failed/{print $11}' /var/log/secure >> ip.txt
写一个防火墙规则,把她DROP

$! 最后一个后台进程PID

5.写一个进度条脚本

#!/bin/bash
jindu(){
while :
do
echo -n '#'
sleep 0.3
done
}
jindu &
cp -r $1 $2
kill $!

route 查网关

curl -I http://192.168.4.5 返回头部



     本文转自sweak_h 51CTO博客,原文链接:http://blog.51cto.com/13478354/2051472,如需转载请自行联系原作者




你可能感兴趣的:(命令整理command)