Linux运维基础学习笔记-第一章

 

Linux运维基础学习笔记-第一章


目录

  1. 通配符
  2. 输入输出重定向
  3. 管道符
  4. 三种引用符

 


1.1基础命令格式

多行输入一个命令,使用\分隔

cp –i \ 
>f1
>f2

1.1.1通配符

1.1.1.1  通配符*

匹配一个多多个字符

ls   *.txt
cp  doc/*   /opt
ls –al /etc/*/*/*.conf           

1.1.1.2  通配符?

匹配任意单一字符

ls   a?.txt
ls   a??.txt

1.1.1.3  通配符[ ]

匹配方括号内的内容

ls /dev/sda[12345]
ls /dev/sda[1-5]

1.1.1.4  组合使用

ls [0-9]?.conf
ls [xyz]*.txt

1.1.2输入输出重定向

1.1.2.1输入重定向

wc < /etc/test.txt
>1 1 7                        #行数   单词数  字符数
[root@localhost leoblog]# wc << aa
> dasd
> sdasd
> aa
 2  2 11                       #将aa间内容作为输入

1.1.2.2输出重定向

ps –ef ? ps.txt
cat f1 f2 f3 > f4 #f1f2f3合并为f4  >>为追加
2> 或2>>    错误重定向
1> 将正确的输出重定向到某个文件
2> 将错误的输出重定向到某个文件
2>&1  标准错误重定向到标准输出
2>1和2>&1的写法有什么区别:
•	2>1的作用是把标准错误的输出重定向到1,但这个1不是标准输出,而是一个文件!!!,文件名就是1;
•	2>&1的作用是把标准错误的输出重定向到标准输出1,&指示不要把1当作普通文件,而是fd=1即标准输出来处理
&>/dev/null 正确输出或错误输出结果都不要

1.1.3管道符

ls –al /etc/* | more
ps aux |  grep httpd | wc -l

1.1.4三种引用符

1.1.4.1 转义符\

mv c\:\\backup  backup
mv abc\?\* abc

1.1.4.2 单引号''

字符间所有特殊含义都将忽略

mv 'c:\backup'  backup

 

1.1.4.3 双引号""

与单引号基本相同,除了$  \  ` 仍然保留特殊含义

1.2基础运维类命令

1.2.1压缩与解压缩

1.2.1.1  tar

主选项

含义

-c

创建新文件

-r

将要归档文件追加到文件末尾

-t

列出已经归档的文件列表

-x

从归档文件中还原出文件

-u

更新文件

 

辅助选项

含义

-z

调用gzip

-w

在还原文件时,将文件修改时间设定为现在时间

-j

调用bzip2

-Z

调用compress命令过滤文档

-f

-f后面不能更其他选项

-v

显示过程

-p

保持文件属性不发生变化

-N  “yyyy/mm/dd”

指定日期之后的文件才压缩

--exclude f1

指定f1文件不打包

tar –cvf    /opt/leo.tar   /etc
tar –zvf    /opt/leo.tar.gz   /etc
tar –jvf    /opt/leo.tar.bz2   /etc
tar –zcvf  /opt/leo.tar.bz2  /opt
tar –N "2019/1/1"  -zcvf log.tar.gz /var/log

自动备份脚本

#!/bin/bash
datetime=`date +%Y_%m_%d`
days=7
backup_user=`whoami`
#备份文件路径
backup_dir=/opt
#需备份文件
backup_file=/leo/txt
#备份日志
backup_log=${backup_user}_$datetime.log
#备份名称
backup_filename=${backip_user}_$datetime.tar.gz
#远程路径
romote_path=/opt/backup
remote_ip="192.168.1.101"

cd ${backup_dir}
mkdir -p ${backup_user}
cd ${backup_user}
echo "备份开始${datetime}"  > ${backup_log}
echo "--------------" > ${backup_log}
#备份目录及日志文件
tar -zcvf ${backup_filename}  ${backup_file}  ${backup_log}
#删除备份过程的日志
#-type f,表示只找file,文件类型的,目录和其他字节啥的不要 
#-exec 把find到的文件名作为参数传递给后面的命令行,代替{}的部分 
#替换当前的shell却没有创建一个新的进程。进程的pid保持不变
#-exec后便跟的命令行,必须用“ \;”结束
find ${backup_dir}/${backup_user} -type f -name "*.log" -exec rm {} \;
#删除7天前的备份
find ${backup_dir}/${backup_user} -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;
#将备份远程至服务器
rsync -avzPl ${backup_dir}/${backup_user}/${backup_filename} ${remote_ip}:${romote_path}

1.1.2.2 gzip/gunzip

只能压缩文件不能压缩目录

选项

含义

-d

解压

-r

递归

-t

检查完整性

-v

显示过程

-l

显示压缩文件信息

-num

压缩级别:-1或-fast最低,-9最高,默认-6

zip –r /opt/leo.zip  /opt/leo
gzip -9v /opt/leo.zip           #对leo.zip进行压缩,级别9
gzip –d 等价于 gunzip

1.1.2.3 bzip2/bunzip2

类似于gzip/gunzip

选项

含义

-d

解压

-v

显示详细

-k

默认解压会删除原文件,若要保存,使用此选项

-f

解压后有与现文件重名,默认不覆盖,若要覆盖,使用此选项

-t

测试完整性

-压缩级别

1-9,数字越大,压缩级别越高

1.2.2查找搜索文件find

格式

含义

-name ‘字符串’

查找匹配字符串的文件

-lname ‘字符串’

查找匹配字符串的链接文件

-gid n

查找ID为n 的用户组文件

-uid n

查找ID为n 的用户文件

-empty

查找为空的目录或文件

-path ‘字符串’

查找路径下匹配字符串的文件

-group ‘字符串’

查找属于用户组的下符合字符串的文件

-depth

优先查找当前目录

-prune 目录

查找时忽略指定目录,与-depth同时使用,-prune 目录会被忽略

-size n

查找文件大小为n

-user  ‘字符串’

查找属于该用户匹配字符串的文件

-mtime +n或-n

按时间查找

-type

按文件类型查找:b(快设备文件),c(字符设备文件),f(普通文件),l(链接文件),d(目录),p(管道),s(socket文件)

-print

查找结果标准输出

-ok

会询问是否执行

-exec

查找结果传入后面命令  -exec {} \;

-o 是或者的意思   -a 是而且的意思   -not 是相反的意思 

#系统中所有大小为0的普通文件,并列出完整信息
find / -type f –size 0 –exec ls –al {} \;
#在系统根目录下查找不在/varlog和/usr/bin 目录下的所有的普通文件
find / \( -path /var/log  -o –path /usr/bin \ ) –prune –o –name “main.c” –print
#查找修改时间7天以前的 文件,以交互的方式删除
find /var/log –type f –mtime +7 –ok rm { } \; 
#查找以大写字母开始,紧接着一个小写字母和2个数字,最后以txt结尾的文件
find  / -name “[A-Z][a-z][0--9][0--9]*.txt” -print

1.2.3传递参数xargs

#批量重命名
ls | xargs –t –i mv { } { }.bak
-i 接受分批的结果
-t 打印执行过程,类似-p,但是-p 会询问

#-d指定参数的分隔符,默认以空白(空格TAb回车)作为分隔符
echo ‘11@22@33’  | xagrs –d ‘@’

#删除文件名中间带空格的文件,如’leo  leo.txt’
#-print 0使用\0来分隔而不是\n,再xargs -0配对
# xargs -0相当于xargs –d “\0”
find –name “* *.txt” –print0 | xargs -0 rm –rf
方法二:
find –name “* *.txt” | xagrs –i rm –rf “{}”

1.2.4文件的连接,合并,排序,去重

1.2.4.1文件连接命令join

事例文件:

[root@localhost test]# cat 1.txt 
name1 alvin1
name2 alvin2
name3 alvin3
name4 alvin4
[root@localhost test]# cat 2.txt 
name1 100
name2 101
name3 102
cccccccccccccccc

(1) join

显示匹配的行,并将值合并(cccname4不匹配所以不显示

[root@localhost test]# join 1.txt 2.txt 
name1 alvin1 100
name2 alvin2 101
name3 alvin3 102

(2) -a

用第1个文件的内容去匹配,若匹配则显示匹配的行,并合并其值;不匹配的行也显示,但其值为空
[root@localhost test]# join -a1 1.txt 2.txt 
name1 alvin1 100
name2 alvin2 101
name3 alvin3 102
name4 alvin4
用第2个文件的内容去匹配,若匹配则显示匹配的行,并合并其值;不匹配的行也显示,但其值为空
[root@localhost test]# join -a2 1.txt 2.txt 
name1 alvin1 100
name2 alvin2 101
name3 alvin3 102
cccccccccccccccc

(3) -o

对于匹配的行,输出"1个文件的第2部分,第2个文件的第2部分"的部分

[root@localhost test]# join -o 1.2 2.2  1.txt 2.txt 
alvin1 100
alvin2 101
alvin3 102

1.2.4.2合并文件paste

直接合并2个文件,以tab分隔

1.2.4.3文本内容排序sort

参数

含义

-n

使用纯数字排序,默认字母顺序排序

-r

反序

-u

相同的数据仅出现一条

-t

分隔符,默认tab

-k

以区间排序

[root@localhost test]# cat /etc/passwd | head -n 3 | sort -t ":" -k3 -n
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

1.2.4.4删除文件中的重复行uniq

-c或--count  在每列旁边显示重复的次数

-d: 或--repeated 仅显示重复的行

uniq无法删除重复不相邻的

先使用sort排序将相同的行排列在一起,在uniq删除

1.3系统运维监控类命令

1.3.1查询Java进程下的线程数

for pid in `ps -ef | grep -v grep | grep "java" | awk '{print$2}'`
do
echo ${pid} > /tmp/pid.txt
cat /proc/${pid}/status| grep Threads > /tmp/Thread.txt
paste /tmp/pid.txt /tmp/Thread.txt
done
sort -k3 -rn

1.3.2kill僵尸进程

ps -e -o stat,ppid,pid,cmd | grep -e ^[Zz] | awk '{print $2}' | xargs kill -9

1.3.3查询CPU或内存占用最多的程序

ps aux |  head -1 ; ps aux | sort -rn -k4 | head -10         #内存
ps aux |  head -1 ; ps aux | sort -rn –k3 | head -10         #CPU

 1.4网络故障排除

1.4.1 下载wget

1.下载限速

wget –limit-rate=1M

2.断点续传

wget-c

3.测试服务器是否支持断点续传

       wget –S 网址  2>&1 | grep Ranges

4.下载文件重命名

       wget –O

1.4.2http命令行工具curl

1.4.2.1显示网址header信息

       curl –I

1.4.2.2常见http状态码

状态码

状态码英文名称

含义

100

Continue

继续。客户端应继续其请求

101

Switching Protocols

切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议

200

OK

请求成功

201

Created

已创建。成功请求并创建了新的资源

202

Accepted

已接受。已经接受请求,但未处理完成

203

Non-Authoritative Information

非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204

No Content

无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档

205

Reset Content

重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域

206

Partial Content

部分内容。服务器成功处理了部分GET请求

300

Multiple Choices

多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端

301

Moved Permanently

资源(网页等)被永久转移到其它URL

302

Found

临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

305

Use Proxy

使用代理。所请求的资源必须通过代理访问

400

Bad Request

客户端请求的语法错误,服务器无法理解

401

Unauthorized

请求要求用户的身份认证

403

Forbidden

服务器理解请求客户端的请求,但是拒绝执行此请求

404

Not Found

请求的资源(网页等)不存在

405

Method Not Allowed

客户端请求中的方法被禁止

408

Request Time-out

服务器等待客户端发送的请求时间过长,超时

500

Internal Server Error

内部服务器错误

501

Not Implemented

服务器不支持请求的功能,无法完成请求

502

Bad Gateway

作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503

Service Unavailable

由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

504

Gateway Time-out

充当网关或代理的服务器,未及时从远端服务器获取请求

505

HTTP Version not supported

服务器不支持请求的HTTP协议的版本,无法完成处理

1.4.2.3显示网址状态码

curl -s -o /dev/null -w %{http_code}"\n" http://www.baidu.com

-s 静默    -o指定输出结果到某个文件  

-w 输出定义的元数据 http_connect、http_code,time_total,time_ connect

                     size_download、size_upload、contet_type

1.4.2.4url地址重定向

curl –L –I

1.4.2.5抓取网页内容保存本地

curl –o

curl –O 重命名

1.4.2.6断点续传,限速

curl –C             断点

curl –limit-rate 2M   限速

1.4.3linux间传输文件工具scp

使用的ssh协议

格式:

1.远程传本地

scp 远程用户名@ip:文件绝对路径  本地系统路径

2.本地传远程

scp 本地文件路径 远程用户名@ip:文件绝对路径

参数:

-r   目录及子目录

-P   指定端口,默认ssh端口22

-l    限速,单位K

1.4.4动态路由追踪及网络故障排查工具mtr

常用参数:

mtr -s 用来指定ping数据包的大小

mtr -n no-dns不对IP地址做域名反解析

mtr -a 来设置发送数据包的IP地址,这个用于主机有多个IP时。

mtr -i 使用这个参数来设置ICMP返回之间的要求默认是1

mtr -c 指定发送多少个数据包

mtr -4 IPv4

mtr -6 IPv6

MTR运行过程中,可以输入快捷字母切换模式例如:

?或 h:显示帮助菜单。

d:切换显示模式。

n:切换启用或禁用 DNS 域名解析

u:切换使用 ICMP UDP 数据包进行探测。

返回结果各列数据说明:

第一列:显示的是IP地址或本机域名,这点和traceroute很像

第二列: Loss%到达此节点的数据包丢包率,显示的每个对应IP的丢包率。

第三列:snt:100设置发送数据包的数量,默认值是10 通过参数 -c来自定义数量。

第四列:last显示的最近一次的返回时延

第五列:Avg平均值这个应该是发送ping包的平均时延

第六列:Best最好或者说时延最低的

第七列:Wrst最差或者说时延最大的

第八列:StDev是标准偏差

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值