前言
本文档中列出的日常维护指令,用于Linux服务器维护人员做参考手册使用,由于技术更新越来越快,需要掌握使用的工具也越来越多,不同的工具使用指令也不同,很难记住那么多指令,所以做了这个手册,这样不用总是问百度,节省维护人员的时间。
系统信息
查看系统版本
# 查看系统版本信息 [root@centos-82 ~]# cat /proc/version Linux version 3.10.0-1127.19.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Aug 25 17:23:54 UTC 2020 [root@centos-82 ~]#
# 查看系统发行信息 [root@centos-82 ~]# cat /etc/centos-release CentOS Linux release 7.8.2003 (Core) [root@centos-82 ~]#
查看CPU
[root@centos-82 ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 61 model name : Intel Core Processor (Broadwell, IBRS) stepping : 2 microcode : 0x1 cpu MHz : 2903.996 cache size : 4096 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm 3dnowprefetch invpcid_single ssbd ibrs ibpb fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap xsaveopt md_clear spec_ctrl bogomips : 5807.99 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management:
查看内存
[root@centos-82 ~]# free -m total used free shared buff/cache available Mem: 3789 763 2389 56 636 2749 Swap: 2047 0 2047
查看硬盘
# 查看硬盘使用情况 [root@centos-82 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 57M 1.8G 3% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 8.5G 8.6G 50% / /dev/sda1 1014M 193M 822M 19% /boot tmpfs 379M 0 379M 0% /run/user/0
# 查看当前各文件及目录大小 [root@centos-82 app]# du -sh ./* 93M ./auth-1.0.0.jar 50M ./eureka-1.0.0.jar 4.0K ./java-one.sh 4.0K ./java.sh 0 ./log
查看Mysql进程
ps -aux|grep mysql
Port 操作
1、查看端口占用
[root@centos-82 app]# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 23041 root 34u IPv6 847818 0t0 TCP *:http (LISTEN)
IP 操作
1、查看本机IP
# 外网IP [root@centos-82 ~]# curl cip.cc IP : 117.89.185.155 地址 : 中国 江苏 南京 运营商 : 电信 数据二 : 江苏省南京市 | 电信 数据三 : 中国江苏南京 | 电信 URL : http://www.cip.cc/117.89.185.155
# 内网IP [root@centos-82 ~]# ifconfig -a ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.82 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::5054:ff:fe05:e1be prefixlen 64 scopeid 0x20<link> ether 52:54:00:05:e1:be txqueuelen 1000 (Ethernet) RX packets 28656432 bytes 2446268713 (2.2 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 28119416 bytes 1735693988 (1.6 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 68905 bytes 16765566 (15.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 68905 bytes 16765566 (15.9 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Firewalld 防火墙
1、查看防火墙服务状态
[root@centos-82 ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 三 2021-06-02 09:30:24 CST; 5 days ago Docs: man:firewalld(1) Main PID: 654 (firewalld) CGroup: /system.slice/firewalld.service └─654 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 6月 02 09:30:24 centos-82 systemd[1]: Starting firewalld - dynamic firewall daemon... 6月 02 09:30:24 centos-82 systemd[1]: Started firewalld - dynamic firewall daemon. 6月 02 09:30:25 centos-82 firewalld[654]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a ...ng it now. Hint: Some lines were ellipsized, use -l to show in full. [root@centos-82 ~]#
2、查看防火墙状态
[root@centos-82 ~]# firewall-cmd --state running
3、防火墙启动、关闭、重启
# 启动 [root@centos-82 ~]# service firewalld start Redirecting to /bin/systemctl start firewalld.service [root@centos-82 ~]# # 重启 [root@centos-82 ~]# service firewalld restart Redirecting to /bin/systemctl restart firewalld.service [root@centos-82 ~]# # 关闭 [root@centos-82 ~]# service firewalld stop Redirecting to /bin/systemctl stop firewalld.service
4、查询、开放、关闭端口
# 查询8080是否开放 [root@centos-82 ~]# firewall-cmd --query-port=8080/tcp no # 开放8080端口 [root@centos-82 ~]# firewall-cmd --permanent --add-port=8080/tcp success # 移除端口 firewall-cmd --permanent --remove-port=8080/tcp # 重启防火墙(修改配置后要重启防火墙) [root@centos-82 ~]# firewall-cmd --reload success
File 操作
1、新建
# 创建目录 test [root@centos-82 /]# mkdir test [root@centos-82 /]# ls bin boot data dev dump.rdb etc home lib lib64 media mnt opt proc root run sbin srv sys test tmp usr var [root@centos-82 /]# # 新建文件 tt.txt [root@centos-82 test]# touch tt.txt [root@centos-82 test]# ll 总用量 0 -rw-r--r-- 1 root root 0 6月 7 10:02 tt.txt [root@centos-82 test]#
2、删除
删除文件tt.txt ,会要求用户确认
rm tt.txt
强制删除文件tt.txt ,不需要确认
rm -f tt.txt
强制删除文件目录test,不需要确认
rm -rf test
删除指定目录下指定文件
find -name .svn |xargs rm -rf
删除某个目录下的文件名为 sy.log 开头的所有文件
rm -rf /home/www/logs/sy.log*
删除指定名称的文件或文件夹
find -type d | grep .svn$ | xargs rm -r
查找某个目录下更改时间超过7天的文件并删除它们
find . -type f -mtime +7 -print | xargs -i echo '"{}"' | xargs rm
3、拷贝
将目录test里的文件tt.txt 复制到 /var/www.txt
cp /test/tt.txt /var/www.txt
将目录test里的所有文件 复制到 /var/test
cp -r /test /var/test
4、搜索
# 搜索nginx配置文件的位置 [root@centos-82 /]# whereis nginx.conf nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/man/man8/nginx.8.gz [root@centos-82 /]#
# 搜索目录/etc/nginx/下以nginx文件名前缀的文件 [root@centos-82 test]# find /etc/nginx/ -name nginx.* /etc/nginx/nginx.conf.bak3 /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak1 /etc/nginx/nginx.conf.bak2 [root@centos-82 test]#
5、编辑 vim
查看文件: cat file1.txt
打开文件:vi file1.txt
vi相关命令:
-
i 切换到输入模式,以输入字符。
-
ESC,退出输入模式,切换到命令模式
-
: 切换到底线命令模式,以在最底一行输入命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
-
字符按键以及Shift组合,输入字符
-
ENTER,回车键,换行
-
BACK SPACE,退格键,删除光标前一个字符
-
DEL,删除键,删除光标后一个字符
-
方向键,在文本中移动光标
-
HOME/END,移动光标到行首/行尾
-
Page Up/Page Down,上/下翻页
-
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
-
ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可! | |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n<space> | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊! (常用) |
n<Enter> | n 为数字。光标向下移动 n 行(常用) |
搜索替换 | |
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用) |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词! | |
:n1,n2s/word1/word2/g | n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(常用) |
:1,$s/word1/word2/g 或 :%s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用) |
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用) |
删除、复制与贴上 | |
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) |
nx | n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。 |
dd | 删除游标所在的那一整行(常用) |
ndd | n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用) |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除游标所在处,到该行的最后一个字符 |
d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
y1G | 复制游标所在行到第一行的所有数据 |
yG | 复制游标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用) |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除 10 行,[ 10cj ] |
u | 复原前一个动作。(常用) |
[Ctrl]+r | 重做上一个动作。(常用) |
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦! | |
. | 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用) |
第二部分:一般模式切换到编辑模式的可用的按钮说明
进入输入或取代的编辑模式 | |
---|---|
i, I | 进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用) |
a, A | 进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用) |
o, O | 进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用) |
r, R | 进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔! | |
[Esc] | 退出编辑模式,回到一般模式中(常用) |
第三部分:一般模式切换到指令行模式的可用的按钮说明
指令行的储存、离开等指令 | |
---|---|
:w | 将编辑的数据写入硬盘档案中(常用) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! |
:q | 离开 vi (常用) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~ | |
:wq | 储存后离开,若为 :wq! 则为强制储存后离开 (常用) |
ZZ | 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出) |
ZQ | 不保存,强制退出。效果等同于 :q!。 |
:w [filename] | 将编辑的数据储存成另一个档案(类似另存新档) |
:r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 |
:n1,n2 w [filename] | 将 n1 到 n2 的内容储存成 filename 这个档案。 |
:! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息! |
JDK 操作
1、运行jar包
-
方式一
java -jar shareniu.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
那如何让窗口不锁定?
-
方式二
java -jar shareniu.jar &
&代表在后台运行。
特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
继续改进,如何让窗口关闭时,程序仍然运行?
-
方式三
nohup java -jar shareniu.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
-
方式四
nohup java -jar shareniu.jar >/dev/null &
解释下 >temp.txt
command >out.file
command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
可通过jobs命令查看后台运行任务
一般用第三种或第四种方式运行,在后台运行,并且关闭当前ssh窗口不会受影响
2、关闭jar包进程
先使用命令 ps aux|grep eureka 列出所有的包名中含有eureka的jar运行进程
[root@centos-82 apptest]# ps aux|grep eureka root 5247 3.3 4.9 3072280 192168 pts/0 Sl 09:37 0:16 java -jar eureka-1.0.0.jar root 5374 0.0 0.0 112824 980 pts/0 R+ 09:46 0:00 grep --color=auto eureka root 12690 0.9 6.2 3076516 242212 ? Sl 6月04 35:23 java -jar /etc/nginx/app/eureka-1.0.0.jar [root@centos-82 apptest]#
然后,使用 kill -9 pid
[root@centos-82 apptest]# kill -9 5247 [root@centos-82 apptest]#
Virsh 操作
virsh是kvm虚拟机常用的管理工具
1、查看虚拟机列表
查看运行的虚拟机:virsh list
查看所有的虚拟机(关闭和运行的虚拟机):virsh list --all
2、启动和关闭
启动:virsh start +域名,如:virsh start centos-70
关闭:virsh shutdown +域名 或者 virsh destroy +域名
3、挂起和恢复
挂起:virsh suspend +域名
恢复被挂起的虚拟机:virsh resume +域名
4、子机随宿主机启动而启动
自动启动:virsh autostart + 域名
取消自动启动:virsh autostart --disable +域名
5、解除标记
virsh undefine +域名
解除标记之后,使用virsh list指令将不能再看到该虚拟机,但其镜像虚拟磁盘文件还在,只是xml的配置文件没有了。