服务器管理小记
1、强制某些已经登录的用户下线
1)查看已经登录的用户详情
# w
23:51:00 up 5:51, 5 users, load average: 0.75, 0.51, 0.29
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 spark 18:00 4:45m 7:19 0.77s -bash
root pts/1 spark 18:06 3:27m 29:39 0.04s vim hdfs11.sh
root pts/2 spark 18:12 2:02m 10:40 0.71s -bash
root pts/3 spark 20:28 3:10m 0.48s 0.48s -bash
root pts/4 spark 23:50 3.00s 0.03s 0.00s w
登录信息的含义:
USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。
TTY:用户登陆所用的终端。
FROM:显示用户在何处登陆系统。
LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。
IDLE:用户空闲时间,从用户上一次任务结束后,开会记时。
JCPU:一终端代号来区分,表示在摸段时间内,所有与该终端相关的进程任务所耗费的CPU时间。
PCPU:指WHAT域的任务执行后耗费的CPU时间。
WHAT:表示当前执行的任务。
2)强制下线
pkill -kill -t TTY
如想提出pts/2
# pkill -kill -t pts/2
2、发现服务器的swap占满了几乎,响应很慢。可以暴力解除占用(相关服务可能会有影响,造成部分数据丢失等,!!慎用):
#swapoff -a && swapon -a
3、突然发现服务器出现卡顿,敲命令后没有输出,问题排查:
1)首先检查内存:
#free -m
total used free shared buff/cache available
Mem: 32012 12241 3946 5 15824 19416
Swap: 511 42 469
看一下free、available的值,还有就是swap是否占用很大。如上所示是正常的状态。
2)检查cpu:
#top
#mpstate 1 5
10:11:52 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:11:53 AM all 0.31 0.00 0.19 0.00 0.00 0.06 0.00 0.00 0.00 99.44
10:11:54 AM all 0.25 0.00 0.13 0.00 0.00 0.00 0.00 0.00 0.00 99.62
10:11:55 AM all 2.46 0.00 0.38 0.00 0.00 0.13 0.00 0.00 0.00 97.04
10:11:56 AM all 0.95 0.00 0.38 0.06 0.00 0.00 0.06 0.00 0.00 98.55
10:11:57 AM all 0.25 0.00 0.19 0.00 0.00 0.06 0.00 0.00 0.00 99.50
Average: all 0.84 0.00 0.25 0.01 0.00 0.05 0.01 0.00 0.00 98.83
1 ,是指输出的时间间隔,5共输出5次。可以设置为10.
主要观察%usr、%iowait、%idle,%user表示用户执行操作占用系统的cpu时间,%iowait这个值只能作为参考,具体要看cpu、iotp,%idle是空闲cpu时间
3)检查磁盘空间
#df -h
4)检查磁盘的io
#iotop -o
Total DISK READ : 28.30 K/s | Total DISK WRITE : 166.26 K/s
Actual DISK READ: 28.30 K/s | Actual DISK WRITE: 88.44 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
6818 be/4 root 0.00 B/s 10.61 K/s 0.00 % 0.18 % java -Dproc_namenode ~rver.namenode.NameNode
6826 be/4 root 0.00 B/s 10.61 K/s 0.00 % 0.11 % java -Dproc_namenode ~rver.namenode.NameNode
6821 be/4 root 0.00 B/s 10.61 K/s 0.00 % 0.10 % java -Dproc_namenode ~rver.namenode.NameNode
6820 be/4 root 0.00 B/s 7.07 K/s 0.00 % 0.07 % java -Dproc_namenode ~rver.namenode.NameNode
6827 be/4 root 0.00 B/s 10.61 K/s 0.00 % 0.07 % java -Dproc_namenode ~rver.namenode.NameNode
6819 be/4 root 0.00 B/s 7.07 K/s 0.00 % 0.07 % java -Dproc_namenode ~rver.namenode.NameNode
6823 be/4 root 0.00 B/s 7.07 K/s 0.00 % 0.06 % java -Dproc_namenode ~rver.namenode.NameNode
6824 be/4 root 0.00 B/s 3.54 K/s 0.00 % 0.05 % java -Dproc_namenode ~rver.namenode.NameNode
6822 be/4 root 0.00 B/s 7.07 K/s 0.00 % 0.03 % java -Dproc_namenode ~rver.namenode.NameNode
6825 be/4 root 0.00 B/s 3.54 K/s 0.00 % 0.03 % java -Dproc_namenode ~rver.namenode.NameNode
483 be/4 root 28.30 K/s 0.00 B/s 0.00 % 0.02 % systemd-journald
639 be/3 root 0.00 B/s 3.54 K/s 0.00 % 0.00 % auditd -n
672 be/4 root 0.00 B/s 7.07 K/s 0.00 % 0.00 % rsyslogd -n [rs:main Q:Reg]
9235 be/4 root 0.00 B/s 10.61 K/s 0.00 % 0.00 % java -Xmx1G -Xms1G -s~nfig/server.propertie
这是一个动态的监控,iotop -o,-o选项查看比较高的磁盘读写程序,具体参数可以使用iotop --help查看。如果没有这个命令,可以yum -y install iotop
5)检查inode
# df -h -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 20M 109K 20M 1% /
devtmpfs 4.0M 392 4.0M 1% /dev
tmpfs 4.0M 1 4.0M 1% /dev/shm
tmpfs 4.0M 474 4.0M 1% /run
tmpfs 4.0M 13 4.0M 1% /sys/fs/cgroup
/dev/vdb 710M 2.1M 708M 1% /data
tmpfs 4.0M 1 4.0M 1% /run/user/0
tmpfs 4.0M 1 4.0M 1% /run/user/1000
查看文件或目录的inode:
#stat 文件或目录名
或
# ls -i 文件名或目录名
查看目录的inode占用情况, 可以通过查找那个目录下的文件最多来确定,还可以对当前目录的inode进行排序
1)for i in /data/*; do echo $i; find $i | wc -l; done
2)ls -i /data/ | sort -n
4、查看某个文件被那个程序占用
#lsof 目录或文件名
或使用fuser:
#fuser -v 文件
5、释放系统的buffer和cache
》只清理PageCache
sync; echo 1 > /proc/sys/vm/drop_caches
》清理dentries和inodes
sync; echo 2 > /proc/sys/vm/drop_caches
》清理PageCache、dentties、inodes
sync; echo 3 > /proc/sys/vm/drop_caches
sync命令能释放掉系统的buffer。不建议直接使用第三条命令,除非清楚的知道清理后的影响。
6、关于磁盘的一点小记
一般添加磁都会使用fdisk进行操作,默认使用的是MBR分表,该分区表最大支持识别2T硬盘空间,最多支持4个主分区。除了最新的系统一般系统只支持在MBR分区引导,MBR分区位于第一扇区的前64字节。那么超过2T的磁盘
要怎么处理呢?使用GPT分区表进行格式化,GPT支持多主分区,磁盘没有2T限制,但是只有最新的一些系统支持EFI、GPT的引导,否则只能将其作为数据盘使用。当然如果只是作为数据盘处理就不存在上述的问题。
fdis就不过多解释了,主要说一下磁盘超过2T处理:
使用parted
7、找出僵尸进程
ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"