Linux常用的一些命令
cd : 切换目录
cd / 切换到根目录 cd ~ 切换到home目录 cd ../切换到父目录
ls 或 ll : 显示当前目录下的文件以及目录
ls 显示当前目录下的文件以及目录的简略信息 ll 显示当前目录下的文件以及目录的详细信息
pwd : 查看当前目录的绝对路径信息
df 可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。
du 可以查看文件及文件夹的大小。
df -h : 查看内存以及磁盘使用情况 # 如果当前目录下文件和文件夹很多,使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。 #这对查看究竟是那个地方过大是不利的,所以得指定深入目录的层数,参数:--max-depth= du -sh :系统只显示当前文件夹所占用的总空间 du -h --max-depth=1 / du -h --max-depth=1 /*
ps 查看进程
ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A 显示所有程序。 ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e 此参数的效果和指定"A"参数相同。 ps e 列出程序时,显示每个程序所使用的环境变量。 ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 ps -H 显示树状结构,表示程序间的相互关系。 ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 ps s 采用程序信号的格式显示程序状况。 ps S 列出程序时,包括已中断的子程序资料。 ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 ps u 以用户为主的格式来显示程序状况。 ps x 显示所有程序,不以终端机来区分。 最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。 ps aux | grep program_filter_word,ps -ef |grep tomcat ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。
结果:
[root@cetc102 ~]# ps PID TTY TIME CMD 7535 pts/1 00:00:00 bash 7843 pts/1 00:00:00 ps [root@cetc102 ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.1 193848 6964 ? Ss 10:30 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 10:30 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 10:30 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 10:30 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 10:30 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 10:30 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 10:30 0:00 [rcu_sched] root 10 0.0 0.0 0 0 ? S< 10:30 0:00 [lru-add-drain] [root@cetc102 ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:30 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0 0 10:30 ? 00:00:00 [kthreadd] root 3 2 0 10:30 ? 00:00:00 [ksoftirqd/0] root 5 2 0 10:30 ? 00:00:00 [kworker/0:0H] root 7 2 0 10:30 ? 00:00:00 [migration/0] root 8 2 0 10:30 ? 00:00:00 [rcu_bh] root 9 2 0 10:30 ? 00:00:00 [rcu_sched] root 10 2 0 10:30 ? 00:00:00 [lru-add-drain]
kill : 结束进程命令
使用kill命令结束进程:kill pid 常用:kill-9 pid ,是强制结束进程 ,其中pid是进程号 Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME
查看端口占用情况
CentOS下可以用netstat或者lsof查看,Windows下也可以用netstat查看,不过参数会不同
Linux: netstat -nap #会列出所有正在使用的端口及关联的进程/应用 lsof -i :portnumber #portnumber要用具体的端口号代替,可以直接列出该端口听使用进程/应用 一、检查端口被哪个进程占用 netstat -lnp|grep 88 #80为端口号
netstat -nap|grep :22 #22为端口号 二、查看进程的详细信息 ps 1777 #1777为pid 三、杀掉进程 kill -9 1777 #杀掉编号为1777的进程(请根据实际情况输入) Windows系统: netstat -nao #会列出端口关联的的进程号,可以通过任务管理器查看是哪个任务 最后一列为程序PID,再通过tasklist命令:tasklist | findstr 2724 再通过任务管理结束掉这个程序就可以了
netstat -nap 查看进程端口占用情况,结果如下所示
[root@cetc102 ~]# netstat -nap Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 5476/X tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 5447/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4995/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 4994/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5516/master tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 7523/sshd: root@pts tcp 0 52 192.168.3.147:22 192.168.3.78:50737 ESTABLISHED 7523/sshd: root@pts tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::6000 :::* LISTEN 5476/X tcp6 0 0 :::22 :::* LISTEN 4995/sshd tcp6 0 0 ::1:631 :::* LISTEN 4994/cupsd tcp6 0 0 ::1:25 :::* LISTEN 5516/master tcp6 0 0 ::1:6010 :::* LISTEN 7523/sshd: root@pts udp 0 0 0.0.0.0:5353 0.0.0.0:* 4383/avahi-daemon: udp 0 0 0.0.0.0:55007 0.0.0.0:* 4383/avahi-daemon: udp 0 0 192.168.122.1:53 0.0.0.0:* 5447/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 5447/dnsmasq udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd udp 0 0 0.0.0.0:723 0.0.0.0:* 4365/rpcbind udp6 0 0 :::111 :::* 1/systemd udp6 0 0 :::723 :::* 4365/rpcbind raw6 0 0 :::58 :::* 7 4483/NetworkManager Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 3 [ ] DGRAM 10499 1/systemd /run/systemd/notify unix 2 [ ] DGRAM 10501 1/systemd /run/systemd/cgroups-agent unix 2 [ ACC ] STREAM LISTENING 19465 1/systemd /run/lvm/lvmetad.socket unix 2 [ ACC ] STREAM LISTENING 44510 5993/gnome-session- @/tmp/.ICE-unix/5993 unix 2 [ ACC ] STREAM LISTENING 43793 6183/ssh-agent /tmp/ssh-aaJZT5QqWRLP/agent.5993 unix 2 [ ACC ] STREAM LISTENING 10510 1/systemd /run/systemd/journal/stdout unix 5 [ ] DGRAM 10513 1/systemd /run/systemd/journal/socket
查看端口是否放开:telnet、nc(netcat)
telnet只能测试TCP telnet SERVER_IP port example: telnet localhost 80 nc测试TCP: nc -z SERVER_IP port example: nc -z 192.192.193.211 22 nc测试UDP nc -uz SERVER_IP port example: nc -uz 192.192.193.211 22
查看进程、内存、CPU占用情况:
1.命令行输入top回车,然后按下大写M按照memory排序,按下大写P按照CPU排序。 [root@cetc102 ~]# top top - 11:23:47 up 53 min, 3 users, load average: 0.01, 0.03, 0.05 Tasks: 245 total, 1 running, 244 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3762336 total, 912940 free, 903752 used, 1945644 buff/cache KiB Swap: 3932156 total, 3932156 free, 0 used. 2326104 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7430 cetc 20 0 759136 38708 24312 S 1.0 1.0 0:41.21 gnome-system-mo 8151 root 20 0 162140 2404 1584 R 0.7 0.1 0:00.36 top 9 root 20 0 0 0 0 S 0.3 0.0 0:01.28 rcu_sched 1 root 20 0 193848 6964 4208 S 0.0 0.2 0:02.09 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain 2. ps -ef | grep "进程名" ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep 进程名 例如: # ps -ef | grep mongodb | grep -v grep root 18512 1 8 Feb28 ? 11:25:23 mongod -f mongodb.conf # ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep 18512 | grep -v grep 18512 mongod mongod -f mongodb.conf 8.0 6243952 7924496 Feb28 root 0 备注: pid:进程的ID vsz:进程占用的虚拟内存 rsz:进程占用的物理内存 [root@cetc102 ~]# ps -ef | grep sleep | grep -v grep root 8194 4470 0 11:26 ? 00:00:00 sleep 60 3. top -d 1 -p pid 例如: # top -d 1 -p 18512 top - 13:18:41 up 9 days, 19:53, 3 users, load average: 0.00, 0.00, 0.00 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.2%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st Mem: 8191244k total, 7929432k used, 261812k free, 122160k buffers Swap: 20479996k total, 16232k used, 20463764k free, 1316248k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18512 root 20 0 7738m 6.0g 5472 S 1.0 76.3 685:26.98 mongodb 4. pmap -x pid 例如: # pmap -x 18512 18512: mongod -f mongodb.conf Address Kbytes RSS Dirty Mode Mapping 0000192c8d4c8000 655360 0 0 ----- [ anon ] 00007f9228ae4000 4 0 0 ----- [ anon ]
pmap -d pid
5.可以使用以下命令查使用内存最多的K个进程
方法1:ps -aux | sort -k4nr | head -K
如果是10个进程,K=10,如果是最高的三个,K=3
说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分)
sort -k4nr中(k代表从第几个位置开始,后面的数字4即是其开始位置,结束位置如果没有,则默认到最后;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。
head -K(K指代行数,即输出前几位的结果)
|为管道符号,将查询出的结果导到下面的命令中进行下一步的操作。
方法2-0:top (然后按下M,注意大写)
方法2-1:top (然后按下m,注意小写)
6. 可以使用下面命令查使用CPU最多的K个进程
方法1:ps -aux | sort -k3nr | head -K
方法2:top (然后按下P,注意大写)
查看内存使用情况:free -m
查看cpu使用情况: top看进程运行情况
查看磁盘以及分区情况: df -h
查看网络情况: ifconfig
查看端口使用情况
#1.方法一
lsof -i:端口号
#2.方法二
netstat -apn|grep 端口号
服务器排查以及优化:
清理内存: #1.【推荐】释放网页缓存(To free pagecache), sync echo 1 > /proc/sys/vm/drop_caches #2.释放目录项和索引(To free dentries and inodes) sync echo 2 > /proc/sys/vm/drop_caches #3.释放网页缓存,目录项和索引(To free pagecache, dentries and inodes): sync echo 3 > /proc/sys/vm/drop_caches
查看网络使用情况: