zoukankan      html  css  js  c++  java
  • 《shell常用命令——基本操作》

    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 ", $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 将 作为定界符。统计一个源代码目录中所有 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 '

     

     

     

  • 相关阅读:
    编码和字符集
    【机器学习】模型泛化
    asp.net GridView控件的列属性
    asp.net截取指定长度的字符串内容
    asp.net 对数据库表增加,删除,编辑更新修改
    asp.net 链接数据库ADO.NET
    常用正则表达式 验证电子邮件网址邮政编码等
    ASP.NET获取文件的相关知识
    C#获取picturebox图片路径
    C# dataGridView根据数据调整列宽
  • 原文地址:https://www.cnblogs.com/boye169/p/13416634.html
Copyright © 2011-2022 走看看