1     基本命令

1.1       kill-杀死进程

kill -9 $(pidof 进程命关键字)

killall 进程名

ps -ef | grep hue | awk '{print $2}' | xargs kill -9

kill -l  列出所有进程信号

1.2       ls-查看

ls -lS 按文件大小排序

ls -lh 查看文件大小和时间

ls -ltr 按时间逆序排序

1.3       ln-链接

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 创建软链接

 

1.4       tar-压缩解压

tar -xf test.tar            解压

tar -zcvf test.tar.gz test 压缩

tar -zxvf test.tar.gz       解压

1.5       nohup

nohup sh test.sh >test.log 2>&1 重定向

1.6       scp-远程拷贝

scp /home/work/source.txt work@ip:/home/work  把本地source.txt文件拷贝到work目录

scp work@ip:/home/work/source.txt /home/work  把ip机器上的文件拷贝到本地]

 

1.7       ssh

  • 免密

# ssh-keygen -t rsa  #生成秘钥

# ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip #复制SSH密钥到目标主机

 

#window环境与linux建立互信

# ssh-copy-id -i /c/Users/boyue/.ssh/id_rsa.pub root@192.168.28.131

  • ssh连接

ssh usename@ip  #远程连接

ssh usename@ip "ls /home"  #远程执行命令

1.8       iconv-编码格式转换

iconv -f gbk -t utf-8 file1 -o file2  格式转换gbk转换为utf-8

1.9       wc-统计

wc -lcw file 统计文件行数和字节数

命令参数:

-c 统计字节数。

-l 统计行数

-w 统计字数

1.10     export

export LANG=en_US.UTF-8 设置系统语言

1.11     echo

echo "a,b,c"|tr "," " "  a b c

1.12      sed

sed -i "s/STG/ADM/g" test.txt 查找替换

sed -i s/\|/^/g file  查找替换

sed -n '1,3p' file1 查看文件1至行内容

 

1.1        grep

grep -in "ODS" . -R

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写

 

grep -l pattern files :只列出匹配的文件名

 

grep -L pattern files :列出不匹配的文件名

 

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

 

grep -c number pattern files :匹配的上下文分别显示[number]行

 

-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

--color=auto :对匹配到的文本着色后高亮显示

-o :是只显示匹配到的字符

-E 允许使用扩展正则表达式

 

1.2       find-用来在指定目录下查找文件

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

find . -ctime -20 #将目前目录及其子目录下所有最近 20 天内更新过的文件列出

find /root/pythonWeb -name "*.py" 查看pythonWeb目录下以py为后缀名的文件

 

find /root/pythonWeb -name "*.py" -print print:表示将结果输出到标准输出

find . -name '[A-Z]*.txt' -print 在当前目录及子目录中,查找大写字母开头的txt文件

常用参数说明 :

mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-amin n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime n : 在过去n天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime n : 在过去n天内被修改过的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。

1.3       awk

ll|awk  '{print $1,$5}'               #显示ll命令执行结果每行的第一列和第五列

awk -F / '{print $2}' grade.txt     #[-F指定分割符为/]

awk -F ':' '{print $2}' version.txt  #[指定分割符为:]

awk  '{printf"%-10s:%-d\n", $1,$5}'  grade.txt #格式化输出

awk  '$5==11 && $6>=90 {print $0}'  grade.txt #过滤

awk '{if(NR>=20 && NR<=30) print $0}' test.txt #查看test.txt文件100行内第20到第30行的内容

cat test |awk '{sum[$2]+=$1}END{for(c in sum) print sum[c],c}' #第2列相同时,第1列相加

cat test |awk -v c="aa" '{if($2==c)print $0 }' #引入外部变量

awk 'END{print NR}' file #计算行数

 

1.1.1         正则表达式

awk 'BEGIN{info="this is a test";if( info ~ /test/){print "ok"}}'

字符

功能

+

指定如果一个或多个字符或扩展正则表达式的具体值(在 +(加号)前)在这个字符串中,则字符串匹配。命令行:awk '/smith+ern/' testfile

将包含字符 smit,后跟一个或多个 h 字符,并以字符 ern 结束的字符串的任何记录打印至标准输出。此示例中的输出是:

smithern, harry smithhern, anne

?

指定如果零个或一个字符或扩展正则表达式的具体值(在 ?(问号)之前)在字符串中,则字符串匹配。命令行:awk '/smith?/' testfile

将包含字符 smit,后跟零个或一个 h 字符的实例的所有记录打印至标准输出。此示例中的输出是:

smith, alan smithern, harry smithhern, anne smitters, alexis

|

指定如果以 |(垂直线)隔开的字符串的任何一个在字符串中,则字符串匹配。命令行:awk '/allen | alan /' testfile

将包含字符串 allen 或 alan 的所有记录打印至标准输出。此示例中的输出是:

smiley, allen smith, alan

()

在正则表达式中将字符串组合在一起。命令行:awk '/a(ll)?(nn)?e/' testfile

将具有字符串 ae 或 alle 或 anne 或 allnne 的所有记录打印至标准输出。此示例中的输出是:

smiley, allen smithhern, anne

{m}

指定如果正好有 m 个模式的具体值位于字符串中,则字符串匹配。命令行:

awk '/l{2}/' testfile

打印至标准输出

smiley, allen

{m,}

指定如果至少 m 个模式的具体值在字符串中,则字符串匹配。命令行:

awk '/t{2,}/' testfile

打印至标准输出:

 

smitters, alexis

{m,n}

指定如果 m 和 n 之间(包含的 m 和 n)个模式的具体值在字符串中(其中m <= n),则字符串匹配。命令行:

awk '/er{1, 2}/' testfile

打印至标准输出:

smithern, harry smithern, anne smitters, alexis

[String]

指定正则表达式与方括号内 String 变量指定的任何字符匹配。命令行:

awk '/sm[a-h]/' testfile

将具有 sm 后跟以字母顺序从 a 到 h 排列的任何字符的所有记录打印至标准输出。此示例的输出是:

smawley, andy

[^String]

在 [ ](方括号)和在指定字符串开头的 ^ (插入记号) 指明正则表达式与方括号内的任何字符不匹配。这样,命令行:awk '/sm[^a-h]/' testfile

打印至标准输出:

smiley, allen smith, alan smithern, harry smithhern, anne smitters, alexis

~,!~

表示指定变量与正则表达式匹配(代字号)或不匹配(代字号、感叹号)的条件语句。命令行:awk '$1 ~ /n/' testfile

将第一个字段包含字符 n 的所有记录打印至标准输出。此示例中的输出是:

smithern, harry smithhern, anne

^

指定字段或记录的开头。命令行:awk '$2 ~ /^h/' testfile

将把字符 h 作为第二个字段的第一个字符的所有记录打印至标准输出。此示例中的输出是:

 

smithern, harry

$

指定字段或记录的末尾。命令行:

awk '$2 ~ /y$/' testfile

将把字符 y 作为第二个字段的最后一个字符的所有记录打印至标准输出。此示例中的输出是:

 

smawley, andy smithern, harry

. (句号)

表示除了在空白末尾的终端换行字符以外的任何一个字符。命令行:

awk '/a..e/' testfile

将具有以两个字符隔开的字符 a 和 e 的所有记录打印至标准输出。此示例中的输出是:

smawley, andy smiley, allen smithhern, anne

*(星号)

表示零个或更多的任意字符。命令行:awk '/a.*e/' testfile

将具有以零个或更多字符隔开的字符 a 和 e 的所有记录打印至标准输出。此示例中的输出是:

smawley, andy smiley, allen smithhern, anne smitters, alexis

\ (反斜杠)

转义字符。当位于在扩展正则表达式中具有特殊含义的任何字符之前时,转义字符除去该字符的任何特殊含义。例如,命令行:

/a\/\//

将与模式 a // 匹配,因为反斜杠否定斜杠作为正则表达式定界符的通常含义。要将反斜杠本身指定为字符,则使用双反斜杠。有关反斜杠及其使用的更多信息,请参阅以下关于转义序列的内容。

 

1.1       xargs

xargs 一般是和管道一起使用。

命令格式:

somecommand |xargs -item  command

-t 表示先打印命令,然后再执行

-d delim 分隔符,默认的分隔符是回车,argument的分隔符是空格

-x exit的意思,主要是配合-s使用

-P 修改最大的进程数,默认是1

-n num 后面加次数,表示命令在执行的时候一次用的argument的个数

l  find /sbin -perm +700 |xargs ls -l

l  echo "nameXnameXnameXname" | xargs -dX  # -d 选项可以自定义一个定界符

name name name name

l  echo "h e l l o"|xargs -n3 # -n 选项多行输出

 

l  echo "a b c" | xargs -n1 | xargs -I {} ls

xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:

 

l  复制所有图片文件到 /data/images 目录下:

ls *.jpg | xargs -n1 -I {} cp {} /data/images

 

l  用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题

find . -type f -name "*.log" -print0 | xargs -0 rm -f

l  xargs -0 将 \0 作为定界符。统计一个源代码目录中所有 php 文件的行数

find . -type f -name "*.php" -print0 | xargs -0 wc -l

l  查找所有的 jpg 文件,并且压缩它们

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

 

1.2        ss

ss -antl 查看所有的tcp连接并且状态为LISTEN的连接

1.3        ps

ps -aux

-a:显示所有用户的进程;

-u:显示用户名和启动时间;

-x:显示没有控制终端的进程;

ps -ef|grep python3

1.4        netstat-显示各种网络相关信息

netstat -nl | grep 9090 查看9090端口是否启用

netstat -apn|grep 80

netstat -a      列出所有端口

netstat -at     列出所有 tcp 端口

netstat -l      只显示监听端口

netstat -lt  # 显示监听TCP端口

netstat -lu  # 显示监听UDP端口

netstat -lx  # 显示监听UNIX端口

 

 

1.5        top-实时查看进程

top: 实时查看进程 ,q退出查看

top -d 3 3秒刷新一次

top -c    显示整个命令而不仅只是显示命令名

top -n 1

1.6       查看cpu信息

cat /proc/cpuinfo | grep name | sort | uniq   #查看CPU型号

cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l  # 查看物理CPU数目

cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l     # 查看CPU核数

cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l  #查看CPU线程数

lscpu # 获取CPU信息

 

 

1.7       whereis-执行文件路径的命令

whereis python3 查看python3所属路径

python3: /usr/bin/python3 /usr/local/python3

1.8        which-执行文件路径的命令

which python3

/usr/bin/python3

which 查找的可执行文件,必须是要在 PATH 下的可执行文件,而不能是没有加入 PATH 的可执行文件,即使他就是可执行文件,但是没有加入到系统搜索路径

1.9       readlink

readlink -f file.txt 读取文件的绝对路径

1.10     tail

tail -f file 实时查看文件内容

tail -n 5 file 查看文件最后5行内容

1.11     tee

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件

echo "hello" |tee file1 file2 #使用指令"tee"将用户输入的数据同时保存到文件"file1"和"file2"

1.12     shuf-随机选择器

shuf train.txt -o test.txt -n 30  #从train.txt文件中随机读取30行文本输出到test.txt

1.13     split-用于分割文件

split -6 README       #将README文件每六行分割成一个文件

1.14     test-检查某个条件是否成立

数值测试

 

-eq

等于则为真

-ne

不等于则为真

-gt 

大于则为真

-ge

大于等于则为真

-lt  

小于则为真

-le 

小于等于则为真

字符串测试

 

=   

等于则为真

!=  

不相等则为真

-z 字符串    

字符串的长度为零则为真

-n 字符串    

字符串的长度不为零则为真

文件测试

 

-e 文件名

如果文件存在则为真

-r 文件名

如果文件存在且可读则为真

-w 文件名

如果文件存在且可写则为真

-x 文件名

如果文件存在且可执行则为真

-s 文件名

如果文件存在且至少有一个字符则为真

-d 文件名

如果文件存在且为目录则为真

-f 文件名

如果文件存在且为普通文件则为真

-c 文件名

如果文件存在且为字符型特殊文件则为真

-b 文件名

如果文件存在且为块特殊文件则为真

 

1.15     sar-查看网速

sar -n DEV 1 1 #查看网速

 

1.16     crontab-添加定时任务

 

  • 为hadoop新用户添加crontab命令:

vim  /etc/cron.allow 【root】

hadoop 

  • cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:

crontab –e    #修改 crontab 文件,如果文件不存在会自动创建。

crontab –l     #显示 crontab 文件。

crontab -r     #删除 crontab 文件。

crontab -ir    #删除 crontab 文件前提醒用户

 

 

  • 除了数字还有几个特殊的符号:"*"、"/"和"-"、","

*     代表所有的取值范围内的数字

"/"   代表每的意思,"/5"表示每5个单位

"-"   代表从某个数字到某个数字

","    分开几个离散的数字

 

实例

描述

0 6-12/3 * 12 * /usr/bin/backup

在12月内,每天的早上6点到12点,每隔3个小时0分钟执行一次/usr/bin/backup

0 */2 * * * /sbin/service httpd restart

每两个小时重启一次apache

50 7 * * * /sbin/service sshd start

每天7:50开启ssh服务

50 22 * * * /sbin/service sshd stop

每天22:50关闭ssh服务

0 0 1,15 * * fsck /home 

每月1号和15号检查/home 磁盘

1 * * * * /home/bruce/backup

每小时01分执行 /home/bruce/backup这个文件

 

  • 批量添加定时任务

pssh -h hosts.txt -i 'cd ~ && crontab -l > cron.cron  && echo "* * * * * echo hello >>/home/hadoop/time.log" >> cron.cron && crontab cron.cron '

 

 

 

 posted on 2020-08-01 21:23  boye169  阅读(243)  评论(0编辑  收藏  举报