• man 是 manual 的缩写 man 是一个帮助命令
• # man ls
shell(命令解释器器)自带的命令称为内部命令,其他的是外部命令 type+命令,查询是内部还是外部命令
• 内部命令使⽤用 help 帮助
• # help cd
• 外部命令使⽤用help帮助
• # ls --help
• info 帮助⽐比 help 更更详细,作为 help 的补充
• # info
1 ls list的缩写 显示目录文件 linux中一切皆文件!!!!!!!!!
-l 长格式显示文件
-a 显示出所有隐藏文件
-A 显示出除.和..之外的隐藏文件
-ld 显示当前的目录属性
-t 按时间顺序显示
-r 逆序显示
-h 方便查看方式显示
实际常用命令组合:
ls –lrth
2 mkdir 创建新目录
-p 级联创建目录
cd 切换目录
cd / 进入根目录
cd ..或者../ 进入当前目录的上一级目录
cd - 返回上一次的操作目录
cd ~ 进入家目录
cd ../.. 进入当前目录的上两级目录
pwd 显示当前目录
cp 复制文件或目录
-r 复制目录
-p 保留文件或目录的属性
mv 移动或改名
rm 删除文件或目录
-r删除目录 -f强制删除
tree 树状显示目录
rmdir 删除空目录,不常用,使用 rm –r替代
touch 创建空文件
cat 显示文件内容
more 显示文件内容
less 显示文件内容
head 显示文件前几行
-n 行数 517656581
tail 显示文件后几行
-n 行数
-f 动态查看
ln 创建软链接 -s 源文件<---目标文件
vim/vi 修改文件 比较重要` 打开一个文件 并没有操作,成为普通模式
按一下键盘i insert进入编辑模式并且在当前光标位置之前插入 按I是跑到行首开始插入
按a是在光标之后追加 按A是跑到结尾处 都在一行内操作
按esc进入普通模式
打一个:进入命令模式
命令模式 q=quit退出 q!强制退出不保存修改内容 set nu 输出行号
普通模式 下按u撤销修改的内容(并非撤销所做的操作),按一下撤销一次
反撤销count+r按一次反撤销一次 Linux下撤销没有次数限制,
搜索字符串 在普通模式下/所需字符串 如果有重复的就按n(next)查找 往回走的话按N
忽略大小写搜索 set ic 不忽略的话就是set noic ic=ignore case
普通模式下 按dd删除光标所在一行
普通模式下 按G跑到文档最后一行 g跑到 文档第一行
普通模式下 按o是跑到光标之后新开一行 进入编辑模式 按O是跑到光标之前新开一行,进入编辑模式
echo 输出内容到控制台 hello $PATH 类似于c语言中printf
>指令 和 >> 指令 覆盖和追加
diff a b 查看俩文件差异
cut 显示某一列或某几列的字段
cut cut.txt -d " " -f1 f1表示第一行
-d 表示指定分隔符
split 拆分文件,文件太大读不出来的场景使用
-l 按输出文件行数 : split -l 200 input_file out_file
-b 按输出文件大小 : split -b 200 input_file out_file
(注意-b后边跟的数字需要换算成字节数)
注:out_file为输出文件的前缀
另外,还有 -d 和 -a 两个选项:
-d 如果加上-d则后缀为数字,不加则默认为字母
-a 默认为2,意思是后缀的位数,这个是根据你分出来的文件个数决定的
read
用于从标准输入中读取输入单行 类似于c语言中的scanf
read -p "Please input the choice:" idx
groupadd group_name 创建一个新用户组 用户组都在/etc/group中
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组
useradd -g admin -d /home/user1 -s /bin/bash user1
etc/passwd 里面存得不是密码,而是用户信息 密码存在 /etc/shadow
创建一个属于 "admin" 用户组的用户
useradd user1 创建一个新用户
userdel -r user1 删除一个用户 ( '-r' 排除主目录)
usermod -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
passwd 修改口令
passwd user1 修改一个用户的口令 (只允许root执行)
chage -E 2005-12-31 user1 设置用户口令的失效期限
pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户
grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组
su – hive 切换用户,带上- 也切换了环境变量
sudo -i 切换到超级用户
编 辑 /etc/ 添加
hadoop ALL=(ALL) NOPASSWD: NOPASSWD: ALL
hadoop是要切换到超级用户的普通用户。
who/w 查看登录的用户信息
chmod 改变文件或目录权限
-R 递归修改 u/g/o/a +-= r/w/x 777(r=4 w=2 x=1)最大权限
chown -R 改变文件或目录所有者 chown : *** 改用户组 chown **:**改用户和用户组
chgrp -R 改变文件或目录所有组
备注:-c 回显修改前后信息
tar -zcvf -zxvf 压缩与解压
-z 支持gzip压缩
-c 打包
-v 显示详细信息
-f 指定压缩文件
-x 解包
gzip 123.txt gunzip 123.txt.gz gzip -d 123.txt.gz
-r 压缩目录
-c 保留原文件 进行压缩 gzip -c 123.txt > 123.txt.gz 差;-9 压缩比最高。
默认压缩比是 -6
zip file1.zip file1 创建一个zip格式的压缩包
zip -r file1.zip file1 f-ile2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包
rar a file1.rar test_file 创建一个叫做 'fil
-数字 用于指定压缩等级,-1 压缩等级最低,压缩比最e1.rar' 的包
需要单独安装
rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'
rar x file1.rar 解压rar包
unrar x file1.rar 解压rar包
0find 搜索文件或者目录
find pathname -options [-print -exec -ok ...]
pathname: find命令所查找的目录路径
命令选项:
-name 按照文件名查找文件 不按大小写的话 -iname
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type 查找某一类型的文件,诸如:
d - 目录 f - 普通文件
-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
+20M查找大于20M的文件 -20M查找小于20M的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
注意:(用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。
相应命令的形式为‘command' { } \; 注意{ }和\;之间的空格。
\转义字符 顾名思义,将其转换其他意思 前面要搭配-e!!!
-ok: 和-exec的作用相同,只不过让用户来确定是否执行。
find 举例:
(1)查找48小时内修改过的文件
find -mtime -2
(2)在当前目录查找 以.log结尾的文件。 ". "代表当前目录
find ./ -name '*.log'
(3)查找/opt目录下 权限为 777的文件
find /opt -perm 777
(4)查找大于210M的文件
find ./ -size +210M
find -size 1000c 查找等于1000字符的文件
(5)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)
find . -type f -mtime +10 -exec rm -rf {} \;
(6)当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,
只不过在删除之前先给出提示。 按y键删除文件,按n键不删除
find . -name '*.log' -mtime +5 -ok -exec rm {} \;
(7)用exnameec选项执行cp命令 改名(有风险,多个文件名字一样,有可能被覆盖掉)
find . -name '*.log' -exec cp {} test3 \;
(8)查找当前目录中以一个小写字母开头,最后是4到9加上.log结束的文件
find . -name '[a-z]*[4-9].log' -print
which 查看可执行文件的位置????????????????????????
which是在PATH就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。d
使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
whereis 查看可执行文件
whereis命令只能用于程序名的搜索,
而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。
如果省略参数,则返回所有信息。whereis是基于系统内建的数据库进行搜索,因此效率很高, 而find则是遍历硬盘查找文件。
grep 搜索字符串匹配的行
强大的文本搜索命令,grep(Global Regular Expression Print)全局正则表达式搜索
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板,如果模板包括空格,则必须被引用。
模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。标准输入(read -p)
命令格式:
grep [option] pattern file|dir
常用参数:
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的行数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹
***常用方式 grep -Rni 字符串 文件或目录 最重要的方式
grep的规则表达式:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
*作为通配符,代表任意个任意字符 *作为正则表达式匹配零个或多个先前字符
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
--- begin 使用场景较少 供参考 ---
\< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} #重复字符x,m次,如:'o\{5\}'匹配包含5个o的行。
x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。
--- end 使用场景较少 供参考 ---
grep 实例:
(1)查找指定进程
ps -ef | grep svn
(2)查找指定进程个数
ps -ef | grep svn -c
(3)从文件夹中递归查找以grep开头的行,并只列出文件
grep -lR '^grep' /tmp
(4)查找非x的行内容
grep ‘[^x]' test.txt
(6)显示包含ed或者at字符的内容行
grep -E 'ed|at' test.txt
sed stream editor
sed [选项] [命令] 文件名
sed的常用选项:
-e:它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项
-f:后跟保存了sed指令的文件
-i:直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改
-n: 取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行
sed中的编辑命令:
a:追加 向匹配行后面插入内容
c:更改 更改匹配行的内容
i:插入 向匹配行前插入内容
d:删除 删除匹配内容的行
s:替换 替换掉匹配的内容
p:打印 打印出匹配的内容,通常与-n选项合用
=:用来打印被匹配的行的行号
r,w:读和写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件
sed 举例
1 sed -i "/The start script/iabc" 1.txt #增 在包含 The start script行之前进行添加行 abc
2 sed -i "/The start script/aabc" 1.txt #增 在包含 The start script行之后进行添加行 abc
3 sed -i‘s/指定的字符/要插入的字符&/’1.txt #增 在指定的字符之前插入字符
4 sed -i 's/指定的字符/&要插入的字符/’ 1.txt #增 在指定的字符之后插入字符
sed -i 's/cp \$HIVE_HOME/\\&/' /opt/cloudera/parcels/CDH/lib/hive/bin/hive-config.sh 出题
5 sed -i ‘s/^.*23/#&/g’ 1.txt #增 注释掉某一行
6 sed -i '/ac/d' 1.txt #删 删除包含ac的行
7 sed '4d' 1.txt #删 删除第四行
8 sed -i 's/ac/bd/g' 1.txt #改 老字符替换成新字符 加上g都给替换,不然就只换第一行
9 sed -i '/ac/chello' start_es.sh # 改 替换包含ac的一行的内容
10 sed '3ahello' 1.txt #向第三行后面添加hello,3表示行号
11 sed '3ihello' 1.txt #在第三行之前插入hello
12 sed -n '3p' 1.txt #打印文件中的第三行内容
13 sed -n '1,3p' 1.txt #打印1到3行
14 sed '/^$/d' 1.txt #删除空行
sed 举例
15 sed -i '/bbb/r 2.txt' 1.txt # 读取2.txt文件,将文件内容写入到1.txt中匹配bbb的行之后。
16 sed -i 'r 2.txt' 1.txt # 读取2.txt文件,将文件内容写入到1.txt每一行之后。r后面跟着的就是要读取的内容文件
17 sed ‘/789/w a.txt’ 1.txt #如果1.txt包含789的行,将包含789的行覆盖写入到a.txt中,如果不包含,清空a.txt
18 sed ‘w a.txt' 1.txt #将文件1.txt的内容写入到a.txt w后面跟着的就是要写的文件,写的文件之后的文件是需要读的文件
19 sed -i -e '1,3d' -e '/abc/cABC' 1.txt #-e的用法举例,先删除1到3行,然后将匹配abc的行替换为ABC。
20 sed -n -e '/a/p' -e '/a/=' 1.txt #先打印文件匹配行的内容,再打印文件匹配航的行号。
21 sed -n ‘/abc/=' 1.txt #打印匹配行的行号
sort 排序
按ASCII码值进行比较,最后将他们按升序输出
示例1
sort 1.txt # 排序
示例2
sort -u seq.txt # 排序并去重
示例3
sort -r 1.txt # 降序进行排序
示例4 慎重
[rocrocket@rocrocket ~]$ sort -r number.txt > number.txt
[rocrocket@rocrocket ~]$ cat number.txt
[rocrocket@rocrocket ~]$
// 看,竟然将number清空了
这个时候 -o就出现了,
sort -r 1.txt -o 1.txt # -o 输出到原文件
示例5
10比2小的情况。
要使用-n选项,来告诉sort,“要以数值来排序”!
sort -n number.txt
sort 排序
示例六
这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量, 第三列表示水果价格。那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实 现?幸好,sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut的-d选项)
指定了间隔符之后,就可以用-k来指定列数了。
sort -n -k 2 -t : facebook.txt
# -t 分隔符为:,-k 以第二列进行排序,-n 按照数值进行排序
示例七
-f 会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
-b 会忽略每一行前面的所有空白部分,从第一个可见字符开始比较
注意:默认的情况下,如果sort排序没有按照ASCII码进行排序(比如a排在了A之前了),
主要因为本地配置的问题;
解决:查看 locale 更改配置 export LC_ALL=C 再locale确认下是否修改成功。
示例八
我想让facebook.txt按照公司人数排序 ,人数相同的按照员工平均工资升序排序
sort -n -t ' ' -k 2 -k 3 facebook.txt
看,我们加了一个-k2 -k3就解决了问题。sort支持这种设定,就是说设定域排序的优先级,
先以第2个域进行排序,如果相同,再以第3个域进行排序。
(如果你愿意,可以一直这么写下去,设定很多个排序优先级)
uniq 去重
用法:uniq [选项]... [文件]
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
参数:
-c, --count 在每行记录前显示该行内容的数量
-d, --repeated 仅显示重复的记录行,并且去重
-D, --all-repeated[=delimit-method] 仅显示重复的行,并不去重
-i, --ignore-case 忽略大小写 取第一个留下
-s, --skip-chars=N 比较时跳过前N个字符
-u, --unique 仅显示非重复的行
-w, --check-chars=N 只对比指定的N个字符,默认是从开始算起,如果 和-s一起使用那么要排除-s指定的字符数
举例
uniq -c 1.txt # 1.显示行的数量
uniq -d 1.txt # 2.只显示重复的行,并去重
uniq -u 1.txt # 3.仅显示非重复的行
uniq -s 2 -w 2 1.txt # 4.-s和-w
-s 2:忽略前两个字符,即从第三列开始比较
-w 2:只比较两个字符,即只比较第三列开始的两个字符
《 sort+uniq 》解决uniq中隔行不能消重的bug
• uniq 去除重复的行,最终结果包含重复和非重复的行。
• uniq -u 只打印非重复的行。
• uniq -d 只打印重复的行。 并且去重
两个文件的交集 --- 重复的行
sort out1.txt out2.txt | uniq -d
# -d 输出重复的行, 需要注意一个问题,那就是这两个文件,在各自的文件中不要出现重复的数据(要先对各个文件进行排序去重)
两个文件的并集 --- 去重之后的行,包括重复的已被去重的行和不重复的行
sort out1.txt out2.txt | uniq # uniq不加参数意思是去掉重复的数据
两个文件的差集
out1.txt-out2.txt
sort out1.txt out2.txt out2.txt | uniq -u
讲解:sort out1.txt out2.txt out2.txt 会让out2.txt的所有内容都出现两次,所以uniq -u 之后不会出现 out2.txt 里面的内容;
而out1.txt和out2.txt重复的内容会至少出现3次以上,也不会输出到结果中.
所以最终结果一定是out1.txt在out2.txt中没有出现过的数据,也就是out1.txt-out2.txt的差集
《 sort+uniq 》
out2.txt - out1.txt
sort out1.txt out1.txt out2.txt | uniq -u
原理请看上面的out1.txt-out2.txt的讲解,原理是一样的
[提醒]
去除文件重复的行
在shell中可以利用uniq
sort unsorted.txt | uniq
注意:要先进行排序,才能调用uniq (uniq命令,只是把相邻的重复的数据行去掉)
paste
paste [ -d -s ] -file1 file2
选项含义如下:
-d 指定不同于空格或tab键的域分隔符。例如用@分隔域,使用-d @。
-s 将每个文件合并成行
awk 具有强大的文本格式化能力 一个强大的文本分析工具
awk [options] 'pattern{action}' file
command | awk ' condition { action }'
示例1 全部打印
awk '{print}' 1.txt
示例2 添加前缀和后缀
awk 'BEGIN{print "col1","col2"} {print} END{print "end1","end2"}' a.txt
示例3 -F 指定分隔符
awk -F "+" '{print $2}' a.txt
示例4
NF(当前行的字段个数)
$NF就代表最后一个字段,$(NF-1)代表倒数第二个字段
echo "aa bb cc dd" | awk '{print $NF}'
echo "aa bb cc dd" | awk '{print $(NF-1)}'
示例5 不打印某一列
不打印某一列时,将对应列设置为空字符串即可,用 $NF="",设置多列时用分号分隔开
cat aa.txt | awk '{$NF="";print $0}’ #不打印最后一列
cat aa.txt | awk '{$(NF-1)="";$NF="";print $0}' #不打印最后两列
awk 具有强大的文本格式化能力 一个强大的文本分析工具吧 {}里面是动作,大括号两边必须要用单引号
示例6 NR (当前处理的是第几行)
cat test.txt | awk '{print NR")", $0}' #打印当前行号和当前文本内容
逗号表示输出的变量之间用空格分隔
右括号必需使用 双引号 才可以原样输出
示例7 打印指定行内容
java -version 2>&1 | awk 'NR==1 {print $0}' #打印第一行
cat a.txt | awk ‘NR===3 {print $0}'
示例8 awk 允许指定输出条件,只输出符合条件的行
awk '条件 {动作}' 文件名
特殊字符需要转义
cat exp.txt | awk '/stsvc\/fms/ {print $0}' #包含 stsvc/fms 的行
cat exp.txt | awk 'NR>4 {print $0}' #大于第四行
cat test.txt | awk '$2=="ff" {print $0}' #某个字段等于具体值
echo "aa ss dd" | awk '{ if($3 == "dd") print $0; else print "nothing"}' # if条件
uid 用户id
pid 进程id
ppid 父进程id
ps –ef 牢记
-e 此参数的效果和指定"A"参数相同,显示所有的进程
-f full-format listing 回显样式
ps -aux
-a 显示所有执行的程序
-u userlist
-x Lift the BSD-style 回显样式
ps -ef
top
idle 空闲比例 cpu空闲50%下,电脑无法使用 那些进程在占用的话看%cpu
%cpu持续超过1000的就是有问题进程
硬盘:40核 128G 万兆网卡 4T*13 SATA(最垃圾的)
用top看cpu
用free -h看内存 最重要看的是 total 和 used 是最准确的这俩
swap 把磁盘当作内存来用
kill -9 id 无敌的杀进程 arch 显示机器的处理器架构(1)
uname -m 显示机器的处理器架构(2)
uname -r
显示正在使用的内核版本 林纳斯控制的版本
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/version 显示内核的版本
cat /etc/redhat -release 显示回显版本 回显就是敲个命令显示的东西吧 那你
date 显示系统日期
cal 2007 显示2007年的日历表
打死也不要用date -s 09:09:09 修改时间
打死也不要用clock -w 将时间修改保存到 BIOS
date回显年月日 date + "%Y%m%d%" 时分秒 %H:%M:%S
时间戳 date +"%S" 从1970年一月一号到现在的秒数
date -d "180 days ago" +%Y%m%d # 180天前
date -d "1 days" +%Y%m%d # 1天后
date -d "-1 days" +%Y%m%d # 一天前
date -d "-1 days ago" +%Y%m%d # 一天后(负负得正)
uptime 电脑起来的时间
last reboot能看到电脑每一次的启动时间
who -b
真正的服务器不是部署在vm里面的,直接安装在linux中mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/mnt/hda2' 已经存在
umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/mnt/hda2' 退出
df -h disk 盘 显示已经挂载的分区列表
ls -lSr 以尺寸大小排列文件和目录
du -sh dir1 disk(盘) 估算目录 'dir1' 已经使用的磁盘空间' du -sh * 1.txt是显示当前文件下所有目录占用的大小
mkfs.ext4 /dev/sdb 格式化磁盘
磁盘没有跟软件挂载在一块的话就是一个硬盘 没法使用
磁盘使用过程 就是先格式化这个盘,然后让它跟软件联系起来(mount)
四大资源 cpu top查看
内存 free -h
磁盘 df -h
网络ipconfig
Red-Hat Package Manager(RPM软件包管理器)
rpm -ivh package.rpm 安装一个rpm包
rpm -Uvh package.rpm 更新一个rpm包但不改变其配置文件
rpm -qa 显示系统中所有已经安装的rpm包
rpm -e package_name.rpm 删除一个rpm包
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
类似于手机上面安装APP
yum install package_name 下载并安装一个rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum clean all 删除所有缓存的包和头文件
dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX
unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS
linux下执行shell文件,报如下错,格式不对。
报错 -bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory
文件普通模式中,set ff 查询文件格式
ifconfig eth0 显示一个以太网卡的配置
ifup eth0 启用一个 'eth0' 网络设备
ifdown eth0 禁用一个 'eth0' 网络设备
ifdown ens33;ifup ens33 相当于一个命令使用
ip a
****netstat -nap |grep 网络连接 与ps -ef一起使用
listen 监听端口号 :::0000
端口号用来区分不同的程序的
netstat -naptul |grep
ping IP
mtr IP 跟踪每一级的IP地址 可能会丢包,丢包不好
ethtool eth0 显示网卡的具体信息,比如speed。
万兆网卡 ll) 半双工(half) 对网卡来说,全双工就是能收能发 半双工就是
iftop 实时流量监控工具 看流量大小
iftop 实时流量监控工具
#yum -y install epel-release
#yum make看spedd 速度 1Mb=1024 kb 这个仅限于 内存和磁盘存储 网络传输中1mb=1000kb
全双工(fucache
#yum -y install iftop
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX: 发送流量
RX: 接收流量
TOTAL:总流量
Cumm: 运行iftop到目前时间的总流量
peak: 流量峰值
rates: 分别表示过去 2s 10s 40s 的平均流量
2、iftop相关参数
-i 设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n 使host信息默认直接都显示IP,如:# iftop -n
-N 使端口信息默认直接都显示端口号,如: # iftop -N
-F 显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-P 使host信息及端口信息默认就都显示
查看网络流量
ifstat
ifstat ens33
RX Pkts/Rate 数据包接收流量
RX Errs/Drop 丢包
TX Pkts/Rate 数据包发送流量
RX Data/Rate 数据接收流量
TX Data/Rate 数据发送流量
iostat -x -d -k 1 100
-d:单独输出Device结果,不包括cpu结果
-k/-m:输出结果以kB/mB为单位,而不是以扇区数为单位
-x:输出更详细的io设备统计信息
1: 采样时间间隔 1s
100:采样个数
pidstat -d 1 查看那个进程的使用IO高
-d 时间间隔
1 1s
[root@hadoop1 ~]# iostat -d -x -k 1 1 查看磁盘io
Linux 3.10.0-229.el7.x86_64 (storage-26) 09/30/2020 _x86_64_ (40 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.03 24.43 29.90 33.12 1874.42 11241.36 416.26 1.42 22.54 6.56 36.97 0.48 3.05
以上各列的含义如下:
rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数
r/s: 每秒完成的读次数
w/s: 每秒完成的写次数
rkB/s: 每秒读数据量(kB为单位)
wkB/s: 每秒写数据量(kB为单位)
avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度
await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm: 平均每次IO请求的处理时间(毫秒为单位)
*** %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率
大约于80%就报警,基本就是满负荷 rz
sz
scp 123.txt root@hadoop1:/home 传过去 送过去
scp root@hadoop2:/home/123.txt /home 拉过去 拉过来