Linux Vi、磁盘、内存、进程

Posted by Jackson on 2017-07-12

1.vi命令的使用

1.1 黏贴的时候需要在编辑模式下才能不丢失数据

1.2找ERROR

1
2
3
找ERROR 时候cat xxx.log | grep -C 10 ERROR >error.log 意思是将出现ERROR的前后各10行的内容输入到error.log 文件中
查找时候在尾行模式下 输入:/keyword 回车键自动匹配 按N键寻找下一个
cat more tail

1.3 设置行号和取消行号

1
set nu  set nonu

1.4清空文件内容方式

1
2
3
cat /dev/null > aaa.log ==> 推荐
echo '' > aaa.log ===>会出现一个字节的空格
gg + dG ==> gg跳转到首行的第一个字母,然后dG进行删除首行及其以下的所有内容

1.5 命令行模式的快捷键

1
2
3
4
5
6
7
8
9
10
11
12
dd 		删除当前行
dG 删除当前行及其以下所有行
ndd 删除当前行及其以下n行

gg 跳转到第一行的第一个字母
G 跳转到最后一行的第一个字母
shift+$ 跳转到行位

使用场景:大数据组件中xml文件的覆盖
首先备份原来文件
其次将编辑好的配置文件用记事本编辑好
进入编辑模式(i)拷贝文本内容

2.系统命令

主要看 / 目录挂载的地方 根目录挂载的是系统盘
其他/dev/vdb1 这种的挂载的是数据盘

2.1查看磁盘 df -h

1
2
3
4
5
6
7
8
9
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.3G 16G 8% / ===>根目录系统盘挂载的情况
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm ===>这些tmp相关的不重要
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 148M 867M 15% /boot ===>数据盘挂载的情况
tmpfs 378M 0 378M 0% /run/user/0

2.2 查看内存

free -m 查看帮助命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost ~]# free --help

Usage:
free [options]

Options:
-b, --bytes show output in bytes
-k, --kilo show output in kilobytes
-m, --mega show output in megabytes
-g, --giga show output in gigabytes
--tera show output in terabytes
--peta show output in petabytes
-h, --human show human-readable output
--si use powers of 1000 not 1024
-l, --lohi show detailed low and high memory statistics
-t, --total show total for RAM + swap
-s N, --seconds N repeat printing every N seconds
-c N, --count N repeat printing N times, then exit
-w, --wide wide output

--help display this help and exit
-V, --version output version information and exit

For more details see free(1).

操作:

1
2
3
4
5
6
7
8
[root@localhost ~]# free -m	   ===>以M的方式显示出来
total used free shared buff/cache available
Mem: 3770 114 3498 11 158 3440
Swap: 2047 0 2047
[root@localhost ~]# free -h ===>以可读的方式显示出来
total used free shared buff/cache available
Mem: 3.7G 114M 3.4G 11M 158M 3.4G
Swap: 2.0G 0B 2.0G

2.3查看负载 top

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~]# top
top - 23:06:07 up 17 min, 1 user, load average: 0.00, 0.01, 0.04
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861484 total, 3580716 free, 117360 used, 163408 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 3522240 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125428 3820 2568 S 0.0 0.1 0:00.99 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.06 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u256:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.28 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
1
2
3
4
重点参数  load average: 0.00, 0.01, 0.04	
1min 5min 15min
经验值:不要超过10
下面的部分主要查看cpu和内存的使用率是否正常,发现异常时候需要找到其对应的pid,查看对应pid的进程是干什么用的,找不出可以重启试试看,查看是否是硬件的问题

3.查看进程,查看端口号

3.1进程 ps -ef |grep ssh

1
2
3
4
5
6
7
8
[root@localhost /]# ps -ef |grep ssh
root 9333 1 0 08:21 ? 00:00:00 /usr/sbin/sshd -D
root 9874 9333 0 08:22 ? 00:00:00 sshd: root@pts/0
root 9914 9876 0 08:23 pts/0 00:00:00 grep --color=auto ssh
进程用户 PID 父ID 进程的内容(进程所属目录)

比如查看 ps -ef |grep ssh
ps -ef |grep ssh -v grep ===> -v的意思是过滤 因为本身启动ps -ef 会出现一个grep的进程

3.2端口号

1
2
3
4
5
6
7
netstat -nlp |grep ***
使用netstat -nlp |grep ssh 这种方式有可能不准确,使用pid是正确姿势
通过pid查找进程号:
[root@localhost /]# netstat -nlp |grep 9333
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9333/sshd
tcp6 0 0 :::22 :::* LISTEN 9333/sshd
这里可以看到其对应的进程是22

3.3 安装http服务,打开web

1
2
3
4
5
6
7
8
9
10
11
12
通过yum命令安装http服务
[root@localhost /]# yum -y install httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* extras: ap.stykers.moe
* updates: mirror.bit.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
Package httpd-2.4.6-90.el7.centos.x86_64 already installed and latest version
Nothing to do

启动httpd服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@localhost /]# systemctl start httpd

查看httpd进程
[root@localhost /]# ps -ef |grep httpd
root 9930 1 0 08:28 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9931 9930 0 08:28 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9932 9930 0 08:28 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9933 9930 0 08:28 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9934 9930 0 08:28 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9935 9930 0 08:28 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9936 9930 0 08:28 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 9938 9876 0 08:28 pts/0 00:00:00 grep --color=auto httpd

查看httpd服务状态
[root@localhost /]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2019-11-29 08:28:32 CST; 43s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 9930 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─9930 /usr/sbin/httpd -DFOREGROUND
├─9931 /usr/sbin/httpd -DFOREGROUND
├─9932 /usr/sbin/httpd -DFOREGROUND
├─9933 /usr/sbin/httpd -DFOREGROUND
├─9934 /usr/sbin/httpd -DFOREGROUND
├─9935 /usr/sbin/httpd -DFOREGROUND
└─9936 /usr/sbin/httpd -DFOREGROUND

Nov 29 08:28:32 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Nov 29 08:28:32 localhost.localdomain httpd[9930]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using lo... message
Nov 29 08:28:32 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost /]# netstat -nlp |grep 9930
tcp6 0 0 :::80 :::* LISTEN 9930/httpd
tcp6 0 0 :::443 :::* LISTEN 9930/httpd
[root@localhost /]#

http协议的默认端口是80
https协议的默认端口是443

3.3 Connection refused 错误出现时的解决方法

  • 1.检查防火墙
  • 2.ping ip
  • 3.telnet 测试ip地址和端口号

操作:去A服务器打开xxx软件的web界面,比如打开http的web界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost /]# clear
[root@localhost /]# ps -ef |grep httpd
root 9933 1 0 14:27 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9934 9933 0 14:27 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9935 9933 0 14:27 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9936 9933 0 14:27 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9937 9933 0 14:27 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9938 9933 0 14:27 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9939 9933 0 14:27 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 9942 9830 0 14:28 pts/0 00:00:00 grep --color=auto httpd
[root@localhost /]# netstat -nlp |grep 9933
tcp6 0 0 :::80 :::* LISTEN 9933/httpd
tcp6 0 0 :::443 :::* LISTEN 9933/httpd
找到对应的端口号,在web界面进行打开其对应的页面

注意:127.0.0.1:22这种方式是本地自己访问自己 windows和其他服务器无法进行访问

4.高危命令

1
2
3
4
a.rm -rf /
b.修改生产环境的配置文件,先进行本备份一份,然后再对原来的配置文件进行修改
c.杀进程 kill -9 进程pid kill -9 $(pgrep -f 关键字)
注意:杀掉进程之前,先找到该进程相关的进程,确定好要kill的进程,不然容易造成事故

5.yum安装软件

1
2
3
4
5
6
yum -y install xxx
yum search xxx
yum remove xxx
rpm -e 卸载软件
rpm -e --nodeps 强制卸载软件
wget http://archive.cloudera.com/cdh5/chd/5/xxxx

6.压缩与解压

1
2
3
4
zip -r xxx.zip ./*
unzip xxx
tar -zxvf xxx.tar.gz
tar -czvf xxx.tar.gz xxx/*

1.vi 三种模式

1
2
命令行模式 编辑模式 尾行模式
开始使用vi 首先是命令行模式 按i键进入编辑模式,编辑之后按esc退回编辑模式,shift+:进入尾行模式,wq保存退出

2.进程端口号

1
2
3
4
查找某个进程          ===> ps -ef |grep xxx
查找该进程对应端口号 ===> netstat -nlp |grep pid
设置行号和取消行号 ===> set nu set nonu
清空文件 ===> echo /dev/null > xxx.log echo '' > xxx.log

3.链接拒绝(权限受限)

1
2
3
检查防火墙
ping ip地址
telnet ip地址加端口号

4.常用命令

1
2
3
wget + 网址
yum -y install xxx yum search xxx yum remove xxx
rpm -qa |grep xxx rpm -e xxx rpm -e --nodeps