开篇
本文来简单介绍下作为一名后端开发, 要在 linux 服务器上进行简单的运维,需要用到的常用命令。
几点声明:
-
本文不会涉及 cd 、cp、mv 这些相当入门级的命令
-
文中命令涉及的参数都有很多,这里不会展开讲,只要不涉及到写复杂脚本,文中给出的参数基本够用
-
很多命令会有 N 多个替代品,这个主要看个人习惯
-
个人实践操作的系统版本是 Centos7.x
正文
1. 查看网络端口占用情况
netstat : 用于显示 tcp,udp 的端口和进程等相关情况。
常用参数:
- -t (tcp) 仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化为数字
- -l 仅列出在Listen(监听)的服务状态
- -p 显示建立相关链接的程序名
语法格式:
netstat -tunlp | grep 端口号
示例:查看 15001 端口的情况
# netstat -tunlp | grep 15001
tcp6 0 0 :::15001 :::* LISTEN 29751/java
2. 查看系统磁盘使用情况
df:可以利用该命令来查看硬盘被占用了多少空间,目前还剩下多少空间等信息。
常用参数:
- -h:人类可阅读的方式显示
示例:
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_miwifi--r3g--srv-root 99G 18G 82G 18% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 65M 3.9G 2% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 1014M 125M 890M 13% /boot
tmpfs 799M 0 799M 0% /run/user/0
3. 查看系统性能指标
top: 实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
这个命令可以单独拿出来写一篇文章。这里不展开讲,详情参考 https://blog.youkuaiyun.com/yjclsx/article/details/81508455
示例:
主要的系统参数都能从下面的结果中看出来
# top
top - 20:43:40 up 127 days, 11:13, 4 users, load average: 0.00, 0.07, 0.09
Tasks: 110 total, 1 running, 109 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 0.3 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8175412 total, 139096 free, 6063940 used, 1972376 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1707316 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29458 root 20 0 2880512 285764 13784 S 0.7 3.5 47:38.10 java
29674 root 20 0 2898464 322984 13872 S 0.7 4.0 12:30.21 java
30060 root 20 0 2904380 403896 14376 S 0.3 4.9 13:24.09 java
1 root 20 0 125216 2988 1716 S 0.0 0.0 18:45.95 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.83 kthreadd
4. 应用进程管理
查看系统进程: ps
# ps -ef | grep java
UID PID PPID C STIME TTY TIME CMD
root 1069 1004 0 6月28 ? 01:22:39 java -jar demo.jar
杀死系统进程:kill
kill -9 进程号
5. 远程登录
ssh: 远程控制我们的服务器, 通常我们需要从一台服务器跳到另一台服务器去操作,就需要用到 ssh 工具。
语法格式:
ssh -p 5002 root@127.0.0.1
-p 后面是端口
root 是服务器用户名
127.0.0.1 是服务器 ip
ssh 的默认端口号为22, 一般不需要指定
示例:
# ssh root@192.168.10.11
6. 解压缩
tar: 它有 4 个功能:1) 将多个文件打包为一个文件 2)将文件打包并压缩 3)打包的文件解包 4)将打包压缩的文件解压
参数:
- -x 从归档中解出文件
- -c 创建新的文档
- -z 压缩文件
- -f 要操作的文件名
- -v 显示操作过程
示例:
1. 把 1.txt 和 2.txt 文件打包为 12.tar
# tar -cvf 12.tar 1.txt 2.txt
2. 把 1.txt 2.txt 文件打包并压缩为 12.tar.gz
# tar -zcvf 12.tar 1.txt 2.txt
3. 将 12.tar 解包
# tar -xvf 12.tar
4. 将 12.tar.gz 解压
# tar -zxvf 12.tar.gz
7. 查看网络情况
ifconfig: 查看本机网络情况
# ifconfig
// 网卡 eth0, ip 172.16.10.187
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.10.187 netmask 255.255.255.0 broadcast 172.16.10.255
inet6 fe80::5054:ff:fee7:9d2e prefixlen 64 scopeid 0x20<link>
ether 52:54:00:e7:9d:2e txqueuelen 1000 (Ethernet)
RX packets 112721126 bytes 28488869877 (26.5 GiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 21713192 bytes 33718998167 (31.4 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ping: 用来测试与目标主机的连通性
# ping www.baidu.com
PING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=52 time=11.1 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=2 ttl=52 time=11.0 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=3 ttl=52 time=11.3 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=4 ttl=52 time=11.4 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=5 ttl=52 time=11.4 ms
telnet: 用于测试当前环境与远程主机的端口之间的防火墙开通与否 (偷懒的命令)
# telnet 172.16.10.187 15001
Trying 172.16.10.187...
Connected to 172.16.10.187.
Escape character is '^]'.
8. 查看日志等文件内容
more
分页显示文件内容, 按空格键显示下一页内容,按 回车键 会显示下一行内容,按 b 键就会往回一页显示
查看 application.yml 文件内容
# more application.yml
查看文件内容,一次显示 5 行
# more -5 application.yml
查看文件内容,从第 5 行开始显示
# more +5 application.yml
tail
显示文件尾部的内容,默认情况下只显示指定文件的末尾 10 行
实时查看 log 文件的尾部
# tail -f service.log
查看log 末尾 200行日志
# tail -200f service.log
less
可以 向前或向后 查看文件内容
按空格键显示下一屏的内容,按回车键显示下一行的内容
按 q 退出
# less 文件名
head
显示文件开头的内容,默认情况下,只显示文件的头10行内容
与 tail 命令刚好相反
cat
显示文件内容,如果文件内容过多,则只会显示最后一页的内容
# cat 文件名
总结
作为一名后端工程师,经常需要我们自己远程到服务器去查看、启动、关闭进程,查看线上日志、排查应用、系统、网络等问题, 而以上的命令基本可以解决我们大多数菜鸟的日常运维操作。