CentOS常见的维护操作
# CentOS常见的维护操作
在 CentOS 7 操作系统中,系统维护工作通常是做应用程序的部署、启停,检查资源环境(特别是磁盘空间占用)等。下面是常见的一些操作,可供技术人员参考。
# 查找PID或端口
在 CentOS 7 操作系统的生产环境中,特别是维护一个不熟悉的环境的情况下,我们经常需要根据侦听的端口号,查进程,或者反之。
参考链接:
- 2021-09-16, 3 Ways to Find Out Which Process Listening on a Particular Port (opens new window)
- 2020-05-08, Finding the PID of the Process Using a Specific Port (opens new window)
下面以阿里云服务器为例:
根据进程的 PID,找到它侦听的端口。 例如,根据进程(PID = 7364)查得它侦听的端口号,可以看到它侦听了3个端口: 9557, 9558, 9559。
[root@izyegovnfev5m8z ~]# netstat -tulpn | grep 7364 tcp 0 0 0.0.0.0:9557 0.0.0.0:* LISTEN 7364/java tcp 0 0 0.0.0.0:9558 0.0.0.0:* LISTEN 7364/java tcp 0 0 0.0.0.0:9559 0.0.0.0:* LISTEN 7364/java
根据端口号来查进程。 例如,以端口号9559,查进程的 PID。
[root@izyegovnfev5m8z ~]# netstat -tulpn | grep :9559 tcp 0 0 0.0.0.0:9559 0.0.0.0:* LISTEN 7364/java
得到进程PID=7364,它是一个 Java 的应用。
根据进程 PID 查路径。 例如,下面 Nginx 的主进程 PID=19469。
[root@izyegovnfev5m8z ~]# ps -auxfw |grep nginx root 19469 0.0 0.0 47124 1160 ? Ss 2021 0:00 nginx: master process sbin/nginx nobody 20038 0.0 0.0 48836 4432 ? S 2021 48:09 \_ nginx: worker process
根据PID,查得其路径是
/data/nginx
。[root@izyegovnfev5m8z ~]# pwdx 19469 19469: /data/nginx
# 查看磁盘空间
# 检查磁盘占用率
为了避免磁盘空间被占满,需要检查磁盘空间占用率。
# 查看磁盘使用率
df -Th
看下面的示例,/data
的占用率已达 90%,需要考虑删除一些不必要的文件,或者扩容。
[root@emer ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 16G 0 16G 0% /dev/shm
tmpfs tmpfs 16G 1008K 16G 1% /run
tmpfs tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/vda1 ext4 40G 22G 16G 58% /
/dev/vdb1 ext4 197G 168G 21G 90% /data
tmpfs tmpfs 3.2G 0 3.2G 0% /run/user/0
# 检查磁盘挂载
常见的命令有如下几个:
# 列出物理磁盘和它的容量
fdisk -l | grep Disk
# 查看块存储(磁盘挂载)
lsblk
# 显示当前挂载的文件系统列表
findmnt
看下面的示例,列出物理磁盘和它的容量。我们可以看到共有2块磁盘:
- 系统盘
/dev/vda
容量是42.9 GB - 数据盘
/dev/vdb
容量是214.7 GB
[root@emer ~]# fdisk -l | grep Disk
Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Disk label type: dos
Disk identifier: 0x000b1b45
Disk /dev/vdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Disk label type: dos
Disk identifier: 0x968bc18d
查看块存储。可见,数据盘 vdb 只有一个分区 vdb1,它是挂载到 /data
下。
[root@emer ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 200G 0 disk
└─vdb1 253:17 0 200G 0 part /data
在 /etc/fstab
中可以看到,它是随操作系统启动自动挂载的。
[root@emer ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Feb 15 09:22:39 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ed95c595-4813-480e-992b-85b1347842e8 / ext4 defaults 1 1
UUID=170fcc27-0fc2-47cf-9e7a-03b87e94cf59 /data ext4 defaults 0 0
查看挂载的文件系统(节选)。可以看到树状结构的挂载图,便于理解。
[root@emer ~]# findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/vda1 ext4 rw,relatime,data=ordered
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,mode=755
│ ...
└─/data /dev/vdb1 ext4 rw,relatime,data=ordered
# 查找占用空间最大的文件夹
先转到需要检查的路径下,再检查占用空间最大的文件夹并排序:
# 列出当前文件夹下面占用空间最大的前10个
du -h | sort -rh | head -10
看下面的示例,我们先进入 /data
路径,然后执行上述组合命令。
[root@emer ~]# cd /data
[root@emer data]# du -h | sort -rh | head -10
168G .
88G ./fastdata/data
88G ./fastdata
65G ./mysql
40G ./mysql/emergency
23G ./fastdata/data/00
17G ./fastdata/data/03
16G ./fastdata/data/04
12G ./fastdata/data/02
9.6G ./fastdata/data/05
可以看到 /data/fastdata/data
和 /data/mysql/emergency
是占用最大的文件夹。
若还需要进一步,可以进入到那个文件夹下面,继续上面的命令,寻找最大的文件夹,便于执行删除清理工作。
如果仅仅是简单的情况下,列出当前文件夹下的文件,按大小排序(仅列出最大的前10个文件):
ls -lhS | head -10
# 查找并删除日志文件
进入到 /data
文件夹,查找日志文件压缩包,打印或者删除。
cd /data
# find and print out the files.
find . -type f -name "spring.log.*.gz" -print
# find and delete the files.
find . -type f -name "spring.log.*.gz" -delete