• shell 常用


     命令行常用的快捷键

    ctrl + c 中断当前命令执行
    ctrl + w 往回删除一个单词,光标放在最末尾
    ctrl + u 删除光标以前的字符
    ctrl + k 删除光标以后的字符
    ctrl + a 移动光标至的字符头
    ctrl + e 移动光标至的字符尾
    ctrl + l 清屏

    rename 重命名

    rename -n 's/abc/def/' *                      //针对当前文件夹下的所有文件 把abc 替换为def    -n并不执行
    rename 's/abc/def/' *                          //针对当前文件夹下的所有文件  把abc 替换为def
    rename 's/abc/def/g' *                        //针对当前文件夹下的所有文件  把所有abc 替换为def
    支持通配符
    ? 可替代单个字符
    * 可替代多个字符
    例子 文件夹中有这些文件foo1, ..., foo9, foo10, ...foo111
    rename foo foo0 foo?                          // foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0
    rename 's/^(//' *.png。                      //将左括号"("去掉
    rename 's/.jpg$/.png/' *.jpg              //将后缀名.jpg改成.png

    批量去掉隐藏文件名的第一个点.

    ls -adl .* | awk '{print $NF}' | sed 's/^.//g' | xargs -i'{}' mv .{} {} //把所有隐藏的文件显示出来
    ls -adl .*                   //列出.* 模式的普通文件 不包括 . ..文件夹
    awk '{print $NF}'        //列出最后一列
    sed 's/^.//g'             //替换以.开头的.
    xargs -i'{}' mv .{} {}    //把前边的输出作为命令行参数 传递给mv命令,-i'{}' 指定模版符号'{}' 表示前边传过来的参数

    mac 命令行 批量把文件名前加'g21_'

    ls -adl * | awk '{print $NF}' | xargs -I '{}' mv {} 'g21_'{}

    ssh/scp

    ssh -p 6000 root@xxx.com
    ssh -i ~/xxx.pem root@xxx.com
    scp -P 6000 root@xxx.com:/xxx.txt ./
    scp -i ~/xxx.pem root@xxx.com:/xxx/xxx.txt ./
    scp xxx.txt root@xxx.com:/xxx.txt
    (-v detail info)

    ssh/scp使用sock5代理连接

    scp -P 8888 -o ProxyCommand="nc -x 127.0.0.1:1086 %h %p" root@ip:/root/xx.txt .
    ssh -p 8888 -o ProxyCommand="nc -x 127.0.0.1:1086 %h %p" root@ip

    traceroute 192.168.9.1 -n

    telnet 192.168.1.2 8000 (only tcp, quit)

    nc
    nc -vzw 6 IP port (-w timeout time) //测试TCP端口
    nc -vuzw 2 IP port //测试UDP端口
    nc -l port //临时监听TCP端口
    nc -lk port //永久监听TCP端口
    nc -lu port //临时监听UDP
    nc -luk port //永久监听UDP

    linux 挂载 u盘
    fdisk -l           //查看当前插入的u盘
    mkdir /mnt/udisk     //创建挂载目录
    mount /dev/xxx   /mnt/udisk   
    umount /mnt/udisk

    rsync copy file

    1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
         如:rsync -a  ./test.c  /backup
    2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DES路径地址包含单个冒号":"分隔符时启动该模式。
        如:rsync -avz  test.c  user@172.16.0.11:/home/user/src
    3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
       如:rsync -avz user@172.16.0.11:/home/user/src  ./src
    4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
        如:rsync -av user@172.16.0.11::www  /databack
    5)从本地机器拷贝文件到远程rsync服务器中。当DES路径信息包含"::"分隔符时启动该模式。
       如:rsync -av /databack user@172.16.0.11::www
    6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
        如:rsync -v rsync://172.16.78.192  /www
    -v, --verbose 详细模式输出
    -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
    -z, --compress 对备份的文件在传输时进行压缩处理

    lsof命令
    通过list open file命令可以查看到当前打开文件,在linux中所有事物都是以文件形式存在,包括网络连接及硬件设备。

    lsof -i:80
    -i参数表示网络链接,:80指明端口号,该命令会同时列出PID,方便kill

    查看所有进程监听的端口

    sudo lsof -i -P | grep -i "listen"

    netstat -nlp |grep LISTEN //查看当前所有监听端口·
    netstat -nlp |grep 80 //查看所有80端口使用情况·
    netstat -an | grep 3306 //查看所有3306端口使用情况·

    dig www.baidu.com @127.0.0.1 -p 5353 //指定特定端口的dns服务 查ip

    杀前6个有NODE 的进程

    ps aux | grep node | head -6 | awk '{print $2}' | xargs kill -9

    统计已连接上的,状态为“established'

    netstat -na|grep ESTABLISHED|wc -l 

    netstat -s命令
    netstat -s | egrep "listen|LISTEN"
    667399 times the listen queue of a socket overflowed
    667399 SYNs to LISTEN sockets ignored
    上面看到的 667399 times ,表示全连接队列溢出的次数,隔几秒钟执行下,如果这个数字一直在增加的话肯定全连接队列偶尔满了。
    netstat -s | grep TCPBacklogDrop
    查看 Accept queue 是否有溢出
    ss命令
    ss -lnt
    State Recv-Q Send-Q Local Address:Port Peer Address:Port
    LISTEN 0 128 *:6379 *:*
    LISTEN 0 128 *:22 *:*
    如果State是listen状态,Send-Q 表示第三列的listen端口上的全连接队列最大为50,第一列Recv-Q为全连接队列当前使用了多少。
    非 LISTEN 状态中 Recv-Q 表示 receive queue 中的 bytes 数量;Send-Q 表示 send queue 中的 bytes 数值。

    系统信息
    cat /proc/cpuinfo
    cat /proc/version
    cat /etc/issue
    cat /etc/lsb-release
    uname -a

    free -h
    df -h
    du

    /var/log/wtmp //每个用户的登录次数和持续时间等信息
    /var/log/btmp //详细,包括登录失败请求
    /var/run/utmp //当前正在本系统中的用户的信息
    二进制文件转换为可编辑文件 wtmp.file
    utmpdump /var/log/wtmp >/var/log/wtmp.file
    可编辑文件转换为二进制文件
    utmpdump -r < /var/log/wtmp.file > /var/log/wtmp

    crontab文件的含义

    六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

    minute hour day month week command

    其中:

    minute: 表示分钟,可以是从0到59之间的任何整数。

    hour:表示小时,可以是从0到23之间的任何整数。

    day:表示日期,可以是从1到31之间的任何整数。

    month:表示月份,可以是从1到12之间的任何整数。

    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

    在以上各个字段中,还可以使用以下特殊字符:

    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    glibc版本查看
    ldd --version

    strings /lib/arm-linux-gnueabihf/libc.so.6 | grep GLIBC_

  • 相关阅读:
    Hausdorff distance between mesh and its symmertic one.
    Fast algorithm to compute minimum volume oriented bounding box
    C++文件读写详解(ofstream,ifstream,fstream)
    libCURL开源库在VS2010环境下编译安装,配置详解
    VPB和OSGGIS安装
    OpenSceneGraph 笔记--如何导出三角形数据
    OpenGL编程指南(第七版)
    osgAnimation例子的注释的注释
    osg 示例程序解析之osgdelaunay
    VS2010+64+OSG3.2.1之五Plugins dae编译
  • 原文地址:https://www.cnblogs.com/sanmubai/p/7676581.html
Copyright © 2020-2023  润新知