linux命令笔记

一直都在说要好好学习下linux命令,最近在学习docker的时候真的发现自己linux的能力太差了,基础也不行,暂时先记下学习docker过程中用到的一些命令行。

首先要先了解下自己的linux系统的操作版本,预防之后遇到的很多坑。

查看Linux系统版本与内核版本

  • 查看内核版本的方式
  1. uname -a

    1
    2
    [root@iZwz91w0kp029z0dmueicoZ /root]#uname -a
    Linux iZwz91w0kp029z0dmueicoZ 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  2. cat /proc/version

    1
    2
    [root@iZwz91w0kp029z0dmueicoZ /root]#cat /proc/version
    Linux version 3.10.0-693.2.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Sep 12 22:26:13 UTC 2017
  • 查看Linux系统版本命令
  1. lsb_release

    1
    2
    3
    4
    5
    6
    [root@iZwz91w0kp029z0dmueicoZ /root]#lsb_release -a
    LSB Version: :core-4.1-amd64:core-4.1-noarch
    Distributor ID: CentOS
    Description: CentOS Linux release 7.4.1708 (Core)
    Release: 7.4.1708
    Codename: Core
  2. cat /etc/redhat-release

    1
    2
    [root@iZwz91w0kp029z0dmueicoZ /root]#cat /etc/redhat-release
    CentOS Linux release 7.4.1708 (Core)

还查到了一个说是cat /etc/issue但是这个文件打开后没什么东西,不清楚是不是我这个系统有问题。。

我这个是一个阿里云的服务器,系统内核是CentOS linux 7.4.1708 x86 64位,linux版本Linux version 3.10.0。

用户

今天在记笔记的时候,看到有的会是$ xxx的指令,而有的是# xxx,后来查了下才知道,原来root用户就会是#开头,而非root用户则是$开头。

一直用root用户其实也是有一定风险的,当然个人使用的话是没问题的,但是如果有多人使用,root用户权限会非常大,并不安全。所以先学习了下如何创建用户,并且分配相关权限。

网络

在windows中是使用ipconfig查看IP网络信息的,但是在linux系统中会提示没有这个指令,那相同能力的指令是什么呢,其实是ifconfig。

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
[root@iZwz91w0kp029z0dmueicoZ /root]#ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:f9:91:0c:70 txqueuelen 0 (Ethernet)
RX packets 3385 bytes 233447 (227.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7300 bytes 448669 (438.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.149.46 netmask 255.255.240.0 broadcast 172.18.159.255
ether 00:16:3e:02:d1:f0 txqueuelen 1000 (Ethernet)
RX packets 5062352 bytes 1452046450 (1.3 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3885791 bytes 441227116 (420.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vethe8247e8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 76:33:08:8d:a1:f0 txqueuelen 0 (Ethernet)
RX packets 3204 bytes 265137 (258.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7105 bytes 434120 (423.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vethfcf581a: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether d6:5a:8c:29:23:7e txqueuelen 0 (Ethernet)
RX packets 133 bytes 11230 (10.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 231 bytes 14338 (14.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

iptables

防火墙配置规则

iptables –list-rules

brctl

先引入工具包:yum install bridge-utils

brctl show

查看端口占用情况

netstat -tunlp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@iZwz91w0kp029z0dmueicoZ /root/elasticsearch]#netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 31413/sshd
tcp6 0 0 :::3306 :::* LISTEN 28980/docker-proxy
udp 0 0 0.0.0.0:25940 0.0.0.0:* 724/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 724/dhclient
udp 0 0 172.20.0.1:123 0.0.0.0:* 7939/ntpd
udp 0 0 172.19.0.1:123 0.0.0.0:* 7939/ntpd
udp 0 0 172.17.0.1:123 0.0.0.0:* 7939/ntpd
udp 0 0 172.18.149.46:123 0.0.0.0:* 7939/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 7939/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 7939/ntpd
udp6 0 0 :::50357 :::* 724/dhclient
udp6 0 0 :::123 :::* 7939/ntpd

硬盘使用情况

df [OPTION]… [FILE]…

  • -a, –all 包含所有的具有 0 Blocks 的文件系统
  • –block-size={SIZE} 使用 {SIZE} 大小的 Blocks
  • -h, –human-readable 使用人类可读的格式(预设值是不加这个选项的…)
  • -H, –si 很像 -h, 但是用 1000 为单位而不是用 1024
  • -i, –inodes 列出 inode 资讯,不列出已使用 block
  • -k, –kilobytes 就像是 –block-size=1024
  • -l, –local 限制列出的文件结构
  • -m, –megabytes 就像 –block-size=1048576
  • –no-sync 取得资讯前不 sync (预设值)
  • -P, –portability 使用 POSIX 输出格式
  • –sync 在取得资讯前 sync
  • -t, –type=TYPE 限制列出文件系统的 TYPE
  • -T, –print-type 显示文件系统的形式
  • -x, –exclude-type=TYPE 限制列出文件系统不要显示 TYPE
  • -v (忽略)
  • –help 显示这个帮手并且离开
  • –version 输出版本资讯并且离开
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@iZwz91w0kp029z0dmueicoZ /root/elasticsearch]#df -hl
    Filesystem Size Used Avail Use% Mounted on
    /dev/vda1 40G 16G 22G 43% /
    devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs 1.9G 0 1.9G 0% /dev/shm
    tmpfs 1.9G 428K 1.9G 1% /run
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    overlay 40G 16G 22G 43% /var/lib/docker/overlay2/15c11eb5a1a871c9e41ce861b6fcd11063a2d5dec965b75985b1068cf05f9ce5/merged
    shm 64M 0 64M 0% /var/lib/docker/containers/1254821edc4c200cd6e899a70347623bb38276bde0db1591f7c9c4dbc208a692/mounts/shm
    tmpfs 380M 0 380M 0% /run/user/0

CPU使用情况

1
2
[root@iZwz9bvlfc3n574x9ygoj9Z /root/es]$top
[root@iZwz9bvlfc3n574x9ygoj9Z /root/es]$top -c

内存使用

1
2
3
4
[root@iZwz9bvlfc3n574x9ygoj9Z ~]$free -h
total used free shared buff/cache available
Mem: 7.6G 1.4G 5.9G 560K 412M 5.9G
Swap: 0B 0B 0B
  • -b 以Byte为单位显示内存使用情况。
  • -k 以KB为单位显示内存使用情况。
  • -m 以MB为单位显示内存使用情况。
  • -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:
    • B = bytes
    • K = kilos
    • M = megas
    • G = gigas
    • T = teras
  • -o 不显示缓冲区调节列。
  • -s <间隔秒数> 持续观察内存使用状况。
  • -t 显示内存总和列。
  • -V 显示版本信息。

buff/cache

概念知识,参考https://www.cnblogs.com/cpw6/p/11711817.html

如何清除

在系统中除了内存将被耗尽的时候可以清缓存以外,我们还可以使用下面这个文件来人工触发缓存清除的操作:

1
$ cat /proc/sys/vm/drop_caches

方法是:

1
$ echo 1 > /proc/sys/vm/drop_caches

当然,这个文件可以设置的值分别为1、2、3。它们所表示的含义为:

1
2
3
echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。

投食入口