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