zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    视频高清直播RTMP视频推流组件EasyRTMP-IOS版如何使用wchar_t*类型参数?
    设计模式
    算法学习【第10篇】:算法之动态规划问题
    算法学习【第9篇】:算法之斐波那契数列
    算法学习【第8篇】:贪心算法找零问题
    算法学习【第7篇】:算法之迷宫问题
    算法学习【第6篇】:算法之数据结构
    算法学习【第5篇】:常用排序算法(*******)
    算法学习【第4篇】:算法之---堆的简单介绍
    算法学习【第3篇】:树和二叉树简介
  • 原文地址:https://www.cnblogs.com/sandyflower/p/11558424.html
Copyright © 2011-2022 走看看