• linux 常用命令集锦


    1、查看端口占用情况

    (1) lsof -i:端口号

       查看 8080 端口被占用情况

    图中 显示 进程号为 39910 占用了 8080 端口

    (2) ps aux | grep 进程号   

        查找进程执行的文件

     图中显示 是java 进程,整个命令见上图

    (3) ll /proc/进程号

        确定进程所在的目录

     图中 红色区域表示进程所在目录

    (4) 根据进程号查看端口信息

    netstat -apn | grep 进程号

     2、zip 包

    (1) zip -r zip包路径   要压缩的文件或目录

          压缩 成zip包

    如: zip -r test.zip ./*  将当前目录下的所有文件和文件夹全部压缩成test.zip ,-r表示递归压缩子目录下所有文件

    生成 的test.zip 在当前目录下。

     如:zip -r /opt/config/test.zip ./*   

    生成 的test.zip 在opt/config目录下。

     如:zip -r test.zip /opt/logs/100003172/*

     将/opt/logs/100003172下的所有文件包括子目录全部压缩到 test.zip中

    如:zip -r test.zip ./*txt

    将 /opt/logs/100003172 下的所有 txt 文件压缩到 test.zip 中

    如:zip -r test.zip abc 123.txt

    将 /opt/logs/100003172 下的 abc 目录 和 123.txt 文件压缩到 test.zip 包中

    (2) unzip -o -d 解压缩目录路径 zip包路径

        把zip包解压到  解压缩目录路径下

    -o:不提示的情况下覆盖文件;
    -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下;

    如:unzip -o -d test test.zip

    将 当前目录下的test.zip 解压到 当前目录的子目录test下

    (3) 参数说明

    -c:将解压缩的结果
    -l:显示压缩文件内所包含的文件
    -p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
    -t:检查压缩文件是否正确
    -u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中
    -v:执行是时显示详细的信息
    -z:仅显示压缩文件的备注文字
    -a:对文本文件进行必要的字符转换
    -b:不要对文本文件进行字符转换
    -C:压缩文件中的文件名称区分大小写
    -j:不处理压缩文件中原有的目录路径
    -L:将压缩文件中的全部文件名改为小写
    -M:将输出结果送到more程序处理
    -n:解压缩时不要覆盖原有的文件
    -o:不必先询问用户,unzip执行后覆盖原有文件
    -P:使用zip的密码选项
    -q:执行时不显示任何信息
    -s:将文件名中的空白字符转换为底线字符
    -V:保留VMS的文件版本信息
    -X:解压缩时同时回存文件原来的UID/GID

    3、gz包

    (1) tar 将 gz 包解压到指定目录中

       tar -zxvf   压缩包.gz    -C  目标目录

    PS: 目标目录需要存在,才能解压成功

       当没有给出 -C 目标目录 的时候,表示将压缩包内容直接解压到当前目录下

     (2) 压缩

    tar -zcvf 压缩包.tar.gz 待压缩目录

     test.tar.gz 压缩包内的目录结构如下:

     PS:若想压缩的时候,将压缩包放在别的目录下,则 “压缩包.tar.gz” 可以填写绝对路径,如:/opt/test.tar.gz ; 这个同样适用于 要压缩的源文件在别的路径下。

    更详细的指令可参考:https://www.runoob.com/linux/linux-comm-tar.html

     4、文件操作

    (1)  cat  文件路径

       查看文件路径下的文件

    如: cat /etc/profile

       查看 /etc 目录下的 profile文件内容

    (2) vi 文件路径

         进入编辑 指定路径下的文件模式

    如: vi /etc/profile

    (3) 按 i 开始编辑

     如:

     看到 Insert 字样表示可以编辑了。

    (4) 退出编辑模式

      按ESC键,然后:
        退出vi
       
    :q! 不保存文件,强制退出vi命令

        :w 保存文件,不退出vi命令
        :wq 保存文件,退出vi命令
        
    中断vi模式时,再进入vi保错的解决办法:

    如果不需要保存上次编辑的内容,则直接删除临时文件:rm  .my.cnf.swp
    (然后系统提示是否确认删除 :rm: remove regular file `.my.cnf.swp'?)

    直接输入y,回车,如下图所示

    5、后台启动进程

    使用 nohup ./start.sh &

     6、目录文件相关操作

     (1) 重命名目录

      mv A B 

    将目录A重命名为B

    7、修改环境变量

    (1) 直接修改 /etc/profile

    • 查看环境变量  (echo $PATH)

     可以看到环境变量中的多个值以 : 隔开

    • 编辑 /etc/profile文件

    • 重新加载文件: source /etc/profile

           

      再次使用 echo $PATH,可以看到新添加的环境变量已添加到系统中

    更多可参考:https://www.cnblogs.com/cucuad/p/10114606.html

    8、Systmctl

        系统服务相关命令

    1)systemctl --version      查看 systemctld版本

     2)查看 systemctld 和 systemctl 程序相关的目录

        whereis systemd 

        whereis systemctl

    3)命令列表

    系统中所有服务对应的文件位置: 目录  /usr/lib/systemd/system/ 下 

    /lib/systemd/system/ 大多数 unit 的配置文件都放在这个目录下。
    /run/systemd/system/ 系统运行过程中产生的脚本,比如用户相关的脚本和会话相关的脚本。
    /etc/systemd/system/ 这个目录中主要的文件都是指向 /lib/systemd/system/ 目录中的链接文件。
    注意,在我们自己创建 unit 配置文件时,既可以把配置文件放在 /lib/systemd/system/ 目录下,也可以放在 /etc/systemd/system/ 目录下。

    /etc/default/ 这个目录中放置很多服务默认的配置文件。
    /var/lib/ 一些会产生数据的服务都会将他的数据写入到 /var/lib/ 目录中,比如 docker 相关的数据文件就放在这个目录下。
    /run/ 这个目录放置了好多服务运行时的临时数据,比如 lock file 以及 PID file 等等

    systemctl list-units            ##列出当前已经启动的 unit,如果添加 -all 选项会同时列出没有启动的 unit

    systemctl list-units --type=service --all   ## 只查看某种类型的 unit

    systemctl list-unit-files       ##根据 /lib/systemd/system/ 目录内的文件列出所有的 unit

    systemctl --failed    ## 查看加载失败的服务

    systemctl status xxx           ##查看指定服务的状态

    systemctl stop xxx             ##关闭指定服务

    systemctl start xxx            ##开启指定服务

    systemctl restart xxx          ##从新启动服务

    systemctl enable xxx           ##设定指定服务开机开启    是在/etc/systemd/system/multi-user.target.wants/  这个目录下 做 服务配置文件的软链;

    systemctl is-enabled xxx      ## 查询指定服务是否是开机自启动

    systemctl disable xxx          ##设定指定服务开机关闭    是在/etc/systemd/system/multi-user.target.wants/  这个目录下 删除掉服务配置文件的软链接;

    systemctl is-active xxx      ## 查询指定服务是否正在运行

    systemctl reload xxx           ##使指定服务从新加载配置

    systemctl reload-daemon    ## 从/usr/lib/systemd/system/下加载所有的服务配置文件

    systemctl list-dependencies xxx    ##查看指定服务的倚赖关系

    systemctl mask  xxx            ##冻结(注销)指定服务,后续无法再启动

    systemctl unmask xxx           ##启用服务

    systemctl set-default multi-user.target ##开机不开启图形

    systemctl set-default graphical.target  ##开机启动图形

    setterm                 ##文本界面设定color

    systemctl show xxx      ## 查看指定服务的配置

    systemctl poweroff  ## 系统关机

    systemctl reboot   ## 重新开机

    systemctl suspend    ## 进入暂停模式

    systemctl hibernate   ## 进入休眠模式

    systemctl rescue    ## 强制进入救援模式

    systemctl emergency   ## 强制进入紧急救援模式

    systemctl list-sockets   ## 查询socket 文件

    4) 服务的状态

    通过 systemctl status xxx可以 查看服务的状态

    第三行描述的是服务状态:

    • active (running) 表示服务正在运行中
    • inactive (dead) 则表示服务当前没有运行
    • active (exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行。
    • active (waiting):正在执行当中,不过还再等待其他的事件才能继续处理。

    9、查看进程占用情况

    1)通过 ps -aux|grep xxx       xxx为关键字,查到进程

          或者若知道服务名通过 systemctl status xxxx   xxx为服务名,查看服务进程号

     2)根据进程号查看内存、CPU占用情况

     10、判断输入变量或者参数是否为空的方法

     (1) 判断变量

    read -p "input a word :" word
    
    if  [ ! -n "$word" ] ;then
    
        echo "you have not input a word!"
    
    else
    
        echo "the word you input is $word"
    
    fi

     (2) 判断变量

    #!/bin/bash
    
    if [ ! -n "$1" ] ;then
    
        echo "you have not input a word!"
    
    else
    
        echo "the word you input is $1"
    
    fi

     (3) 直接通过变量判断

    #!/bin/sh
    
    para1=
    
    if [ ! $para1 ]; then
    
      echo "IS NULL"
    
    else
    
      echo "NOT NULL"
    
    fi 

    (4) 使用test判断

    #!/bin/sh
    
    dmin=
    
    if test -z "$dmin"
    
    then
    
      echo "dmin is not set!"
    
    else  
    
      echo "dmin is set !"
    
    fi

    (5)使用""判断

    #!/bin/sh 
    
    dmin=
    
    if [ "$dmin" = "" ]
    
    then
    
      echo "dmin is not set!"
    
    else  
    
      echo "dmin is set !"
    
    fi

    (6)判断目录是否存在

    dir=/opt/test
    if [ -d "$dir" ];then
       echo $dir exist
    fi

    (7)判断文件是否存在

    file=/opt/test
    if [ -d "$file" ];then
       echo $file exist
    fi

    参考:https://www.jb51.net/article/56550.htm

     11、软链接的操作

     (1)  创建软链接

    ln -s 【目标目录】【软链接地址】    -----  【目标目录】指软链接指向的目标目录下,【软链接地址】指 “快捷键” 文件名称,该文件是被指令创建的。

      如上图,目前要将 .../etc/telegraf 目录 在/etc下创建一个软链接,指向该目录

     (2) 修改已有软链接,将其链接其它目标目录

    ls -snf  【新目录地址】【软件链接地址】

     (3) 删除

    rm  -rf 【软链接地址】

    参考:https://www.cnblogs.com/xzlive/p/11125542.html

     12、拷贝 

    (1) 参数详解

    -f   :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
    -i   :若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
    -r   :递归持续复制,用于目录的复制行为

    (2) 使用

    cp src target       ----- src 和 target 均可以是文件或目录

    cp -rf src target     ----- 覆盖拷贝

     13、grep 命令

    (1) 在文件中查找匹配的字符串

    grep -rn xxx *       表示针对当前目录及其子目录下的所有文件内容进行匹配,字符串为 xxx

    grp -rmw xxx *       表示针对当前目录及其子目录下的所有文件内容进行精确匹配,字符串为 xxx

    常用选项

         -E :开启扩展(Extend)的正则表达式。

      -i :忽略大小写(ignore case)。

      -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

      -n :显示行号

      -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

      -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

      -o :只显示被模式匹配到的字符串。

      --color :将匹配到的内容以颜色高亮显示。

      -A  n:显示匹配到的字符串所在的行及其后n行,after

      -B  n:显示匹配到的字符串所在的行及其前n行,before

      -C  n:显示匹配到的字符串所在的行及其前后各n行,context

     参考:

    https://www.cnblogs.com/iSun520/p/11277107.html

     14、操作系统版本查看

    (1) uname -a  

       Linux查看版本当前操作系统内核信息  

    (2) cat /proc/version

       Linux查看当前操作系统版本信息      

    (3) cat /etc/issue  或cat /etc/redhat-release

       Linux查看版本当前操作系统发行版信息

    15、查看 CPU 信息

    cat /proc/cpuinfo

    processor     逻辑处理器的id。

    physical id    正式的物理处理器的id。

    core id           cpu里面的每个核心的id。

    cpu cores     每个cpu物理处理器中的内核数量。

    siblings         每个cpu物理处理器中的逻辑处理器的数量。

     参考:

    https://blog.csdn.net/qingfengxd1/article/details/92806428

     16、更改 shell 脚本编码

     在 linux 服务器上执行脚本的时候,有时会提示以上,该异常信息表示 该脚本的编码格式不对,需要更改成 unix,更改方式如下:

    • vi start.sh
    • 按住 shift + :
    • 输入 set ff=unix,按回车
    • 再按住 shift + :
    • 输入 set ff,按回车,可以看到其现在的编码格式已经被修改成了unix

    •  按住 shift +:
    • 输入wq 进行退出

     17、查看CPU相关信息命令

    (1) lscpu

     18、服务器名称相关操作

    (1) 修改服务器 hostname

    #修改服务器的 hostname
    hostnamectl set-hostname master
    #修改后的 hostname 需要能够本地解析出来
    echo "127.0.0.1 master">>/etc/hoss

     19、netstat

    (1) 当netstat 命令显示找不到的时候,需要执行 yum -y install net-tools 进行安装

    (2) 查看端口

    20、查找文件

    (1)  find / -name *关键字*

     这个会根据 关键字查找含有关键字的所有文件

    (2) find / -iname *关键字*

     相对于 (1) 不区分大小写进行搜索

    更多命令见:

    https://blog.51cto.com/4547985/2177544

    6、如何检查Linux下是否安装了某软件(参考 :https://blog.csdn.net/menghefang/java/article/details/88595090)

    1、rpm包安装的,可以用 rpm -qa 看到,如果要查找某软件包是否安装,用 rpm -qa | grep “软件或者包的名字”
    2、以deb包安装的,可以用 dpkg -l 看到。如果是查找指定软件包,用 dpkg -l | grep “软件或者包的名字”
    3、yum方法安装的,可以用 yum list installed 查找,如果是查找指定包,用 yum list installed | grep “软件名或者包名”
    以查看yum安装的zlib为例:

    [root@CentOS6 package]# yum list installed | grep "zlib"
    zlib.x86_64 1.2.3-29.el6 @anaconda-CentOS-201410241409.x86_64/6.6
    zlib-devel.x86_64 1.2.3-29.el6 @base

  • 相关阅读:
    C. Shaass and Lights 解析(思維、組合)
    D. Binary String To Subsequences(队列)(贪心)
    CodeForces 1384B2. Koa and the Beach (Hard Version)(贪心)
    CodeForces 1384B1. Koa and the Beach (Easy Version)(搜索)
    CodeForces 1384C. String Transformation 1(贪心)(并查集)
    CodeForces 1384A. Common Prefixes
    POJ-2516 Minimum Cost(最小费用最大流)
    POJ3261-Milk Patterns(后缀数组)
    HDU-1300 Pearls(斜率DP)
    HDU-4528 小明系列故事-捉迷藏(BFS)
  • 原文地址:https://www.cnblogs.com/sandyflower/p/11558424.html
Copyright © 2020-2023  润新知