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

原文地址:https://www.cnblogs.com/sandyflower/p/11558424.html