Linux要点整理
一、虚拟机网络连接模式
-
桥接模式(Bridged):虚拟机与物理主机处于同一个网段,占用实际物理IP,可联网
将物理主机的网卡与虚拟机的虚拟网卡利用虚拟网桥进行通信,相当于将物理主机虚拟为交换机,所有虚拟机和物理主机本身均连接到该交换机的某一接口,虚拟机IP地址与物理主机IP处于同一个网段,网关与DNS与物理主机一致,即可联网
-
网络地址转换模式(NAT):自定义网段,可自动通过物理主机实际网卡代理联网,不占用实际物理IP
物理主机虚拟网卡(可自定义网段)与虚拟机虚拟网卡连接达到通讯目的,物理主机虚拟网卡类似于虚拟机网关形式出现,同时虚拟机的虚拟网卡与物理主机的实际网卡相互连,通过实际网卡代理达到联网目的
-
仅主机模式(Host-Only):自定义网段,不可联网,不占用实际物理IP
物理主机虚拟网卡(可自定义网段)与虚拟机虚拟网卡连接达到通讯目的,物理主机虚拟网卡类似于虚拟机网关形式出现
三、用户及组管理
4、权限管理
-
权限概述
依次为:文件类型、文件属主权限、文件属组权限、其他用户权限
- 文件类型:- 代表文件、d 代表目录、l 代表链接、c 代表字符型设备、 b 代表块设备、n 代表网络设备
- 权限:r可读、w可写、x可执行,对应数值为4、2、1,-表示反义
[root@localhost docker]# ll total 16 -rw-rw-r--. 1 docker docker 338 Aug 5 18:01 demo.txt drwxr-xr-x. 2 root root 6 Aug 18 17:15 dir -rwxr-xr-x. 1 docker docker 104 Aug 5 18:10 exer.sh drwxrwxr-x. 2 docker docker 97 Aug 18 17:21 new drwxrwxr-x. 2 docker docker 4096 Aug 18 17:21 old -rwxr-xr-x. 1 docker docker 68 Aug 5 17:59 whileExec.sh
-
更改文件权限
chmod [OPTION]... MODE[,MODE]... FILE...
-
chmod NNN fileName
[root@localhost docker]# chmod 755 demo.txt
-
chmod [ugoa]*([-+=]([rwxXst] fileName
[root@localhost docker]# chmod ugo+x demo.txt
-
-
更改文件属主
chown U:G fileName
[root@localhost docker]# chown zk:zookeeper demo.txt
6、进程管理
-
ps:查看用户进程
UID:启动进程的用户ID
PID:进程ID
PPID:父进程ID
C:进程生命周期中的CPU利用率
STIME:进程启动时的系统时间
TTY:进程所运行的终端
TIME:运行进程需要的累计CPU时间
CMD:启动的程序名称
-
默认展示
[root@localhost ~]# ps PID TTY TIME CMD 996 pts/0 00:00:00 bash 1455 pts/0 00:00:00 ps
-
带参展示
-e:查看所有进程
-f:扩展输出
-l:长格式输出(显示更多信息)
--forest:层级信息展示
[root@localhost ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 2 0 0 09:58 ? 00:00:00 [kthreadd] root 3 2 0 09:58 ? 00:00:00 [ksoftirqd/0] root 5 2 0 09:58 ? 00:00:00 [kworker/0:0H] root 985 1 0 09:58 ? 00:00:00 /usr/libexec/postfix/master -w postfix 987 985 0 09:58 ? 00:00:00 qmgr -l -t unix -u
-
-
top:实时查看进程资源
top:当前时间、系统的运行时间、登录的用户数、系统的平均负载(1分钟、5分钟、15分钟。值越大负载越高)
Tasks:进程总数量、运行进程、休眠进程、停止进程、僵化进程(进程已完成,但父进程没有响应)
%Cpu(s):CPU占用详情:用户进程(us)、系统进程(sy)、
KiB Mem:物理内存占用:内存大小、空闲内存、已使用内存
KiB Swap:虚拟内存占用:内存大小、空闲内存、已使用内存
[root@localhost ~]# top top - 15:15:26 up 5:16, 1 user, load average: 0.00, 0.01, 0.03 Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1016232 total, 808096 free, 82816 used, 125320 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 785140 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1300 root 20 0 0 0 0 S 0.3 0.0 0:10.30 kworker/0:2 1 root 20 0 128164 6808 4044 S 0.0 0.7 0:00.84 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.08 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.01 kworker/u2: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.24 rcu_sched 10 root rt 0 0 0 0 S 0.0 0.0 0:00.16 watchdog/0 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
-
kill:停止进程(格式:kill PID)
-9:强制结束
[root@localhost ~]# kill 1476 [root@localhost ~]# kill -9 1476
7、磁盘管理
-
mount:挂载磁盘
Linux文件系统��所有的磁盘都并入一个虚拟目录下。在使用新的存储媒体之前,需要把它放到虚拟目录下,就叫挂载
-
mount:查看挂载信息
设备文件名 on 挂载到虚拟目录的挂载点 type 文件系统类型 (访问状态)
[root@localhost ~]# mount devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=497244k,nr_inodes=124311,mode=755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel) /dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota) /dev/sda2 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
-
mount -t type device directory:手动挂载
mount -t 文件系统类型 设备名称 虚拟目录挂载点
[root@localhost ~]# mount -t xfs /dev/sda2 /boot mount: /dev/sda2 is already mounted or /boot busy /dev/sda2 is already mounted on /boot [root@localhost ~]#
-
-
umount:卸载磁盘
Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。
-
umount [directory | device ] :卸载设备
umount 挂载点 或者 设备名称
[root@localhost new]# umount /home/docker
-
-
df:查看磁盘空间
设��文件位置 存储空间 已使用空间 可用空间 使用占比 挂载点
-h:以较高可读性展示
[root@localhost new]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 12G 897M 12G 8% / devtmpfs 486M 0 486M 0% /dev tmpfs 497M 0 497M 0% /dev/shm tmpfs 497M 6.6M 490M 2% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda2 1014M 125M 890M 13% /boot tmpfs 100M 0 100M 0% /run/user/0
-
du:查看指定目录大小
-c:显示total,-s:显示每个输出参数的总计,-h:以较高可读性展示
[root@localhost boot]# du -csh /boot/ 92M /boot/ 92M total [root@localhost boot]# du -csh ./* [root@localhost boot]# du -csh /boot/* 140K ./config-3.10.0-693.el7.x86_64 0 ./efi 4.0K ./grub 8.0M ./grub2 49M ./initramfs-0-rescue-a674af0bf23e46d1a0f156803aed8c55.img 20M ./initramfs-3.10.0-693.el7.x86_64.img 600K ./initrd-plymouth.img 288K ./symvers-3.10.0-693.el7.x86_64.gz 3.1M ./System.map-3.10.0-693.el7.x86_64 5.7M ./vmlinuz-0-rescue-a674af0bf23e46d1a0f156803aed8c55 5.7M ./vmlinuz-3.10.0-693.el7.x86_64 92M total
五、环境变量
如果要使用环境变量,加\(,如果要操作环境变量,不加\)(仅printenv指令不适用该规则)。
1、局部变量
-
局部变量(用户自定义变量)名尽量小写,避免与系统全局变量冲突
-
使用“=”为变量赋值,当变量值含有空格等特殊字符时,要加引号
-
局部变量仅在当前shell有效,在其子shell或其他shell中均无效
[root@localhost ~]# echo $my_var
[root@localhost ~]# my_var=hello
[root@localhost ~]# echo $my_var
hello
[root@localhost ~]# my_str='hello John'
[root@localhost ~]# echo $my_str
hello John
2、全局变量
- 将已创建的局部变量,使用export var_name命令导出即可成为全局变量
- 全局变量在其子shell中也可使用,若子shell对该变量重新赋值,仅在该子shell有效,对父shell无影响
[root@localhost ~]# echo $my_str
hello John
[root@localhost ~]# export my_str
[root@localhost ~]# echo $my_str
hello John
[root@localhost ~]# bash
[root@localhost ~]# echo $my_str
hello John
[root@localhost ~]# my_str='sub John'
[root@localhost ~]# echo $my_str
sub John
[root@localhost ~]# exit
exit
[root@localhost ~]# echo $my_str
hello John
3、删除环境变量
unset:使用unset var_name指令来删除环境变量
[root@localhost ~]# echo $my_str
hello John
[root@localhost ~]# unset my_str
[root@localhost ~]# echo $my_str
[root@localhost ~]#
4、PATH环境变量
- PATH环境变量的作用是定义了命令和程序被执行时查找的目录
# 默认的PATH环境变量的目录如下
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- 新增PATH环境变量(仅当前登录有效方式),以" : "与原有的隔开
# 新增PATH环境变量,仅当前登录有效方式
[root@localhost ~]# PATH=$PATH:/home/zookeeper
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/zookeeper
5、启动shell于启动文件
在你登入Linux系统启动一个bash shell时,默认情况下bash会在几个文件中查找命令。这些文件叫作启动文件或环境文件。bash检查的启动文件取决于你启动bash shell的方式。启动bash shell有3种方式
- 登录时作为默认登录shell,会执行/etc/profile,$HOME/.bash_profile启动文件
- 作为非登录shell的交互式shell,会执行$HOME/.bashrc启动文件
- 作为运行脚本的非交互shell,会执行BASH_ENV环境变量中定义的启动文件
启动文件,永久设置环境变量,可以通过设置这三个启动文件来实现,注意区别
- /etc/profile:系统环境启动文件(System wide environment and startup programs),对所有用户生效。用户登录时,/etc/profile会首先执行/etc/profile.d/目录下的所有*.sh文件
- $HOME/.bash_profile:对当前用户生效,用户登录时.bash_profile会检查是否存在.bashrc文件,存在即先执行.bashrc文件
- $HOME/.bashrc:该文件使用场景一般是被其他文件调用,作用:为当前用户定制命令别名、执行系统/etc/bashrc文件中的命令
6、查看环境变量
-
env:或printenv,查看所有全局变量
\(:以\)NAME的格式,使用具体全局变量
# 查看所有全局变量,以下仅粘贴部分 [root@localhost ~]# env HOSTNAME=localhost.localdomain SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=137.32.117.1 7044 22 USER=root MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root LANG=en_US.UTF-8 HOME=/root LOGNAME=root SSH_CONNECTION=137.32.117.1 7044 137.32.117.3 22 # 查看单个全局变量 [root@localhost ~]# printenv HOME /root [root@localhost ~]# echo $HOME /root
-
set:查看局部变量、用户自定义变量、全局变量
# 查看所有全局变量,以下仅粘贴部分 [root@localhost ~]# set HOSTNAME=localhost.localdomain SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=137.32.117.1 7044 22 USER=root MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root LANG=en_US.UTF-8 HOME=/root LOGNAME=root SSH_CONNECTION=137.32.117.1 7044 137.32.117.3 22
六、未整理命令
1、进程相关
-
sleep:休眠
-
&:后台运行
[root@localhost ~]# jobs [root@localhost ~]# sleep 10 & [1] 1014 [root@localhost ~]# jobs [1]+ Running sleep 10 & [root@localhost ~]# jobs [1]+ Done sleep 10 [root@localhost ~]# jobs [root@localhost ~]#
-
which:查找命令文件位置
-
type:查看命令文件类型
# 查看外部命令ps信息 [root@localhost ~]# which ps /usr/bin/ps [root@localhost ~]# type -a ps ps is /usr/bin/ps [root@localhost ~]# ps -f UID PID PPID C STIME TTY TIME CMD root 995 991 0 09:15 pts/0 00:00:00 -bash root 1039 995 0 10:28 pts/0 00:00:00 ps -f # 内建命令pwd [root@localhost ~]# type pwd pwd is a shell builtin [root@localhost ~]# which pwd /usr/bin/pwd [root@localhost ~]# type -a pwd pwd is a shell builtin pwd is /usr/bin/pwd [root@localhost ~]#
内建命令与外部命令的区别在于是否需要衍生出子进程来执行该命令,可以用type查看是内建还是外部命令