Linux 运维学习,跟着视频教程走走流程,学习了解一下 Linux
学习环境
VMware-workstation-full-16.0.0-16894299.exe
CentOS-7-x86_64-Everything-2009.iso
Xftp-7.0.0054p.exe
Xshell-7.0.0054p.exe
马哥Linux高端运维顶级云计算就业课程网络班37期
Xshell 连接 Centos7 首先在 Linux 虚拟机打开终端,查看 ip 以及将防火墙关闭
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ss -tnl ifconfig yum install net-tools ip addr list iptables -L -n systemctl disable firewalld.service systemctl stop firewalld.service
然后打开 xshell 连接 Linux 虚拟机
Linux系统了解 终端设备:terminal
物理终端,也称控制台:console
虚拟终端:tty
图形终端
串行终端:ttyS
伪终端:pty
命令行接口:CLI [root@localhost ~]#
root:当前用户名称
localhost:当前主机名
~:用户当前所在目录(current directory),也称工作目录(working directory)
#:命令提示符,# 为管理员账号,$ 为普通用户
文件系统 /dev/pts/0
最左侧 / 表示根目录
其余 / 表示为文件分隔符,Linux 文件分隔符为 / ,Windows 文件分隔符为 \
文件名支持使用除 / 以外的任意字符,最长不能超过 255 个字符
1 2 3 4 5 6 7 basename /etc/sysconfig/network-scripts/ifcfg-ens33 ifcfg-ens33dirname /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts
Linux基础知识 命令格式 语法通用格式:# COMMAND OPTIONS ARGUMENTS
COMMAND 发起一个命令,请求内核将某个二进制程序运行为一个进程,命令本身就是一个可执行的程序文件,二进制格式的文件(ELF 格式),有可能调用共享库文件。命令分为两种,一种是由 shell 程序自带的命令,成为内置命令,另一种则是独立的可执行文件,文件名即为命令名,称为外部命令。shell 程序是独特的程序,负责解析用户提供的命令,查询通过环境变量,从左到右依次查看。
1 2 3 4 5 6 7 8 file /bin/lsecho $PATH type COMMAND
OPTIONS 用来指定命令的运行特性,选项分为短选项和长选项两种,短选项如-l
、-d
,有些命令选项没有-
,多数可合并,-l -d
可合并为-ld
,长选项如--help
,长选项不能合并,有些选项可以带参数称为选项参数。
ARGUMENTS 表示命令的作用对象,即命令对什么生效,多个命令参数之间以空白字符分隔,如ls -ld /var /etc
。
获取命令帮助 内部命令 help COMMAND
外部命令
命令自带简要格式的使用帮助,COMMAND --help
使用手册获取帮助,man COMMAND
,使用手册位置:/usr/share/man
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 man1:用户命令; man2:系统调用; man3:C库调用; man4:设备文件及特殊文件; man5:文件格式;(配置文件格式) man6:游戏使用帮助; man7:杂项; man8:管理工具及守护进行; whatis COMMAND makewhatis
阅读手册快捷键
空格
:先后翻一屏
b
:向前翻一屏
Ctrl+d
:向后翻半屏
Ctrl+u
:向前翻半屏
回车
:向后翻一行
k
:向前翻一行
G
:跳转至最后一行
g
:跳转到第一行
nG
:跳转至第n行
/keyword
:从前往后找,不区分大小写,n
:往后翻
?keyword
:从后往前找,n
:往前翻,N
:往后翻
-M /PATH/TO/SOMEDIR
:到指定目录下查找命令手册并打开之
q
:退出手册
基础命令 pwd 1 2 3 [root@localhost ~] /root
cd 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cd cd ~cd - [root@localhost ~] [root@localhost sysconfig] [root@localhost sysconfig] [root@localhost etc] /etc/sysconfig
ls 文件详细属性:drwxr-xr-x. 2 root root 204 1月 18 11:20 anaconda
d
:表示文件类型,-
,d
,b
,c
,l
,s
,p
rwxr-xr-x
:权限信息
rwx
:文件属主的权限
r-x
:文件数组的权限
r-x
:其他用户(非属主、属组)的权限
.
:表示该文件为隐藏文件
2
:数字表示文件被硬链接的次数
root
:文件的属主
root
:文件的属组
204
:表示文件的大小,单位为字节
1月 18 11:20
:文件最近一次被修改的时间
anaconda
:文件名
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@localhost ~] . boot.log-20210119 firewalld rhsm vmware-network.1.log vmware-vmtoolsd-root.log .. btmp grubby_prune_debug secure vmware-network.2.log wtmp anaconda chrony lastlog spooler vmware-network.log yum.log audit cron maillog tallylog vmware-vgauthsvc.log.0 boot.log dmesg messages tuned vmware-vmsvc-root.log [root@localhost ~] anaconda btmp firewalld messages tallylog vmware-network.log wtmp audit chrony grubby_prune_debug rhsm tuned vmware-vgauthsvc.log.0 yum.log boot.log cron lastlog secure vmware-network.1.log vmware-vmsvc-root.log boot.log-20210119 dmesg maillog spooler vmware-network.2.log vmware-vmtoolsd-root.log [root@localhost ~] 总用量 1040 drwxr-xr-x. 2 root root 204 1月 18 11:20 anaconda drwx------. 2 root root 23 1月 18 11:21 audit -rw-------. 1 root root 0 1月 19 17:46 boot.log [root@localhost ~] 总用量 1.1M drwxr-xr-x. 2 root root 204 1月 18 11:20 anaconda drwx------. 2 root root 23 1月 18 11:21 audit -rw-------. 1 root root 0 1月 19 17:46 boot.log [root@localhost ~] drwxr-xr-x. 7 root root 4096 1月 19 17:46 /var/log
cat 1 2 3 4 5 6 7 8 9 10 11 12 [root@localhost ~] 1 \S 2 Kernel \r on an \m 3 [root@localhost ~] \S$ Kernel \r on an \m$ $
tac 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 40 41 42 43 44 [root@localhost ~] root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync :x:5:0:sync :/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin [root@localhost ~] chrony:x:998:996::/var/lib/chrony:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt shutdown:x:6:0:shutdown:/sbin:/sbin/shutdownsync :x:5:0:sync :/sbin:/bin/sync lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin root:x:0:0:root:/root:/bin/bash
file 1 2 3 [root@localhost ~] /etc/fstab: ASCII text
echo 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 ~] hello world [root@localhost ~] hello world[root@localhost ~] [root@localhost ~] hello world [root@localhost ~]$SHELL [root@localhost ~] /bin/bash [root@localhost ~] /bin/bash
shutdown 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@localhost ~] Shutdown scheduled for 二 2021-01-19 22:26:29 CST, use 'shutdown -c' to cancel. [root@localhost ~] Broadcast message from root@localhost.localdomain (Tue 2021-01-19 22:21:29 CST): The system is going down for reboot at Tue 2021-01-19 22:26:29 CST! [root@localhost ~] Broadcast message from root@localhost.localdomain (Tue 2021-01-19 22:22:04 CST): The system shutdown has been cancelled at Tue 2021-01-19 22:23:04 CST! [root@localhost ~] Shutdown scheduled for 二 2021-01-19 22:33:31 CST, use 'shutdown -c' to cancel. [root@localhost ~] Broadcast message from root@localhost.localdomain (Tue 2021-01-19 22:23:31 CST): Hello Everyone,I wanna reboot at 10m later The system is going down for reboot at Tue 2021-01-19 22:33:31 CST! [root@localhost ~] Connection closing...Socket close. Connection closed by foreign host. Disconnected from remote host(centos7) at 22:24:19.
date 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@localhost ~] 2021年 01月 22日 星期五 13:35:27 CST [root@localhost ~] 2021-01-22 13:43:32 [root@localhost ~] 2021-01-22 [root@localhost ~] 13:37:57 [root@localhost ~] 2021-01-22 13:38:57 [root@localhost ~] 1611294293
clock,hwclock
cal 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 40 41 42 43 44 45 46 47 48 [root@localhost ~] 一月 2021 日 一 二 三 四 五 六 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 [root@localhost ~] 2021 一月 二月 三月 日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六 1 2 1 2 3 4 5 6 1 2 3 4 5 6 3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 13 10 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 20 17 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 27 24 25 26 27 28 29 30 28 28 29 30 31 31 四月 五月 六月 日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六 1 2 3 1 1 2 3 4 5 4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12 11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19 18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26 25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30 30 31 七月 八月 九月 日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六 1 2 3 1 2 3 4 5 6 7 1 2 3 4 4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11 11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18 18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25 25 26 27 28 29 30 31 29 30 31 26 27 28 29 30 十月 十一月 十二月 日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六 1 2 1 2 3 4 5 6 1 2 3 4 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 31
alias 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@localhost ~]alias cp ='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls ='ls --color=auto' alias mv ='mv -i' alias rm ='rm -i' alias which ='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' alias cls=cleanunalias cls
which 1 2 3 4 5 6 7 8 9 [root@localhost ~]alias ls ='ls --color=auto' /usr/bin/ls [root@localhost ~] /usr/bin/ls
whereis 1 2 3 4 5 6 7 8 9 10 11 [root@localhost ~]ls : /usr/bin/ls /usr/share/man/man1/ls.1.gz [root@localhost ~]ls : /usr/bin/ls [root@localhost ~]ls : /usr/share/man/man1/ls.1.gz
who 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@localhost ~] root tty1 2021-01-21 18:05 root pts/0 2021-01-23 14:43 (192.168.1.105) root pts/1 2021-01-23 15:43 (192.168.1.105) [root@localhost ~] 系统引导 2021-01-21 18:04 [root@localhost ~] 运行级别 3 2021-01-21 18:05
w 1 2 3 4 5 6 7 [root@localhost ~] 16:18:47 up 18:58, 3 users , load average: 0.05, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 四18 1:35m 0.03s 0.03s -bash root pts/0 192.168.1.105 14:43 7.00s 0.06s 0.04s w root pts/1 192.168.1.105 15:43 23.00s 0.01s 0.00s less -s
根目录系统 文件层级结构:FHS Filesystem Hierarchy Standard
/bin
:所有用户可用的基本命令程序文件
/sbin
:供系统管理使用的工具程序
/boot
:引导加载器必须用到的各静态文件
/dev
:存储特殊文件或设备文件
/etc
:系统程序的配置文件,只能为静态
/home
:普通用户家目录,一般为/home/USERNAME
/root
:管理员家目录
/lib
:为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
./libc.so.*
:动态链接的C库
./ld*
:运行时链接器/加载器
./modules
:用于存储内核模块的目录
/lib64
:64位系统特有的存放64位共享库的路径
/media
:便携式设备挂载点,cdrom, floppy等
/mnt
:其它文件系统的临时挂载点
/opt
:附加应用程序的安装位置(可选路径)
/srv
:当前主机为服务提供的数据
/tmp
:为产生临时文件的程序提供用于存储临时文件的目录,可供所有用户执行写入操作,有特殊权限
/usr
:usr Hierarchy
,全局共享的只读数据路径
./bin、./sbin
./lib、./lib64
./include
:C程序头文件
./share
:命令手册页和自带文档等架构特有的文件的存储位置
./local
:让系统管理员安装本地应用程序;也通常用于安装第三方程序
./X11R6
:X-Window 程序的安装位置
./src
:程序源码文件的存储位置
/var
:存储发生变化的数据的目录
./cache
:Application cache data
./lib
:Variable state information
./local
:Variable data for /usr/local
./lock
:Lock files
./log
:Log files and directories
./opt
:Variable data for /opt
./run
:Data relevant to running processes
./spool
:Application spool data
./tmp
:Temporary files preserved between system reboots
/proc
:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息,它们多为内核参数,例如net.ipv4.ip_forward
, 虚拟为net/ipv4/ip_forward
,存储于/proc/sys/
,因此其完整路径为/proc/sys/net/ipv4/ip_forward
/sys
:sysfs 虚拟文件系统提供了一种比 proc 更为理想的访问内核数据的途径,其主要作用在于为管理 Linux 设备提供一种统一模型的的接口
文件类型
-
:常规文件 file
d
:directory,目录文件
b
:block device,块设备文件,支持以block
为单位进行随机访问
c
:character device,字符设备文件
major number
:主设备号,用于标识设备类型,进而确定要加载的驱动程序
minor number
:次设备号,用于标识同一类型中的不同设备
symbolic link
:符号链接文件
pipe
:命名管道
socket
:套接字文件
bash 命令历史 shell 进程会将其会话中保存此前用户提交执行过的命令
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 [root@localhost ~] 1 ll /dev 2 ech $SHELL 3 echo $SHELL 4 pwd 5 history [root@localhost ~] 1000 [root@localhost ~] /root/.bash_history [root@localhost ~] [root@localhost ~] 1 history [root@localhost ~] ignoredups
命令补全 shell 程序在接收到命令用户执行命令的请求,分析完成之后,最左侧的字符串会被当成命令
命令查找机制:查找内部命令,根据 PATH 环境变量中设定的命令,自左而右逐个搜索目录下的文件名
输入给定的打头字符串,如果唯一标识命令按 Tab
则自动补全,如果不唯一,则按两次 Tab
键能显示所有打头列表
路径补全 根据给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件,如果唯一标识按 Tab
则自动补全,如果不唯一,则按两次 Tab
键能显示所有打头列表
命令行展开 ~
,自动展开位用户的家目录,或指定的用户的家目录,{}
,可承载一个逗号分隔的路径列表,并能够将其展开位多个路径,如:/tmp/{a,b}
相当于 /tmp/a /tmp/b
命令行状态结果 bash 通过状态返回值来输出此结果,命令执行完成之后,其返回值保存于 bash 的特殊变量 $?
中,命令正确执行时,有的返回有命令返回值,不同命令,结果各不相同,$COMMAND
,引用命令的执行结果
引用 强引用:''
,弱引用:""
,命令引用:``
快捷键 Ctrl+a
:跳转至命令行行首
Ctrl+e
:跳转至命令行行尾
Ctrl+u
:删除行首至光标所在处之间的所有字符
Ctrl+k
:删除光标所在处至行尾的所有字符
Ctrl+l
:清屏,相当于 clear
文件名通配
*
:匹配任意长度的任意字符
?
:匹配任意单个字符
[]
:匹配指定范围内的任意单个字符
[a-z]
,[A-Z]
, [0-9]
,[a-z0-9]
[[:upper:]]
:所有大写字母
[[:lower:]]
:所有小写字母
[[:alpha:]]
:所有字母
[[:digit:]]
:所有数字
[[:alnum:]]
:所有的字母和数字
[[:space:]]
:所有空白字符
[[:punct:]]
:所有标点符号
[^]
:匹配指定范围外的任意单个字符
[^[:upper:]]
:匹配非大写字符
[^0-9]
:匹配非数字
[^[:alnum:]]
:匹配非字母和数字
命令hash 1 2 3 4 5 6 7 8 9 [root@study /] 命中 命令 4 /usr/bin/chmod 1 /usr/bin/cat 4 /usr/bin/man 10 /usr/bin/ls
变量
多命令执行 1 2 3 4 5 6 7 COMMAND1;COMMAND2;COMMAND3;...... COMMAND1 && COMMAND2 COMMAND1 || COMMAND2
目录管理命令 mkdir 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 ~]mkdir : 已创建目录 "/tmp/x" mkdir : 已创建目录 "/tmp/x/y" mkdir : 已创建目录 "/tmp/x/y/z" [root@localhost ~]mkdir : 已创建目录 "/tmp/x/y1" mkdir : 已创建目录 "/tmp/x/y1/a" mkdir : 已创建目录 "/tmp/x/y1/b" mkdir : 已创建目录 "/tmp/x/y2" [root@localhost ~]mkdir : 已创建目录 "a_c" mkdir : 已创建目录 "a_d" mkdir : 已创建目录 "b_c" mkdir : 已创建目录 "b_d"
rmdir 1 2 3 4 5 6 7 8 9 [root@localhost ~]rmdir : 正在删除目录 "/tmp/x/y/z" rmdir : 正在删除目录 "/tmp/x/y" rmdir : 正在删除目录 "/tmp/x"
tree
文本查看命令 cat
tac
more
less
head 1 2 3 4 5 6 7 [root@localhost ~] TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" DEFROUTE="yes"
tail 1 2 3 4 5 6 7 8 9 [root@localhost ~] IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="6ae13078-476b-45b6-a9d9-1fac0480b8a5" DEVICE="ens33" ONBOOT="yes"
stat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@localhost ~] 文件:"/tmp/yum.log" 大小:0 块:0 IO 块:4096 普通空文件 设备:fd00h/64768d Inode:67160137 硬链接:1 权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root) 环境:system_u:object_r:initrc_tmp_t:s0 最近访问:2021-01-18 11:17:06.195300428 +0800 最近更改:2021-01-18 11:17:06.195300428 +0800 最近改动:2021-01-18 11:17:06.195300428 +0800 创建时间:-
touch
文件管理命令 cp
mv
rm
IO 重定向与管道 输出重定向 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 40 41 42 43 [root@localhost /] root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@localhost /] [root@localhost /] root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@localhost /] dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin [root@localhost /] [root@localhost /] root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin
输入重定向 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [root@localhost /]where are you? WHERE ARE YOU? How are you? HOW ARE YOU? ^C [root@localhost /] > where are you? > how are you > EOF [root@localhost /] [root@localhost /]where are you? how are you
管道 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@localhost /] \S KERNEL \R ON AN \M [root@localhost /] \S KERNEL \R ON AN \M [root@localhost /] \S Kernel \r on an \m
用户与组 用户类别
管理员:0
普通用户:1-65635
系统用户:1-499(CentOS6), 1-999(CentOS7)
登录用户:500-60000(CentOS6), 1000-60000(CentOS7)
名称解析:Username <–> UID 名称解析库:/etc/passwd
组类别
管理员组:0
普通用户组:1-65635
系统组:1-499(CentOS6), 1-999(CentOS7)
登录组:500-60000(CentOS6), 1000-60000(CentOS7)
用户的基本组
用户的附加组
私有组:组名同用户名,且只包含一个用户
公共组:组内包含了多个用户
名称解析:groupname <–> gid 名称解析库:/etc/group
认证信息 通过比对事先存储的,与登录时提供的信息是否一致
密码使用策略:
使用随机密码
最短长度不要低于8位
应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类
定期更换
加密算法:
对称加密:加密和解密使用同一个密码
非对称加密:加密和解密使用的一对儿密钥
单向加密:只能加密,不能解密;提取数据特征码
算法:
md5: message digest, 128bits
sha:secure hash algorithm, 160bits
sha224
sha256
sha384
sha512
etc/passwd:用户的信息库
格式为 :name:password:UID:GID:GECOS:directory:shell name: 用户名 password:可以是加密的密码,也可是占位符x; UID:用户ID; GID:用户所属的主组的ID号; GECOS:注释信息 directory:用户的家目录; shell:用户的默认shell,登录时默认shell程序;
/etc/shadow:用户密码 用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段
/etc/group:组的信息库 格式为:group_name:password:GID:user_list user_list:该组的用户成员;以此组为附加组的用户的用户列表;
groupadd
groupmod
groupdel
useradd
usermod
userdel
passwd
gpasswd
newgrp
chage
id
su 1 2 3 4 5 6 7 8 9 su - USERNAME su -l USERNAME su USERNAME su - USERNAME -c 'COMMAND'
权限管理
mode:rwxrwxrwx
左三位:定义 user(owner)的权限
中三位:定义 group 的权限
右三位:定义 other 的权限
r
:readable
,读权限
w
:writable
,写权限
x
:excutable
,执行权限
ownership:user,group,other
权限组合机制
---
、000
、0
--x
、001
、1
-w-
、010
、2
-wx
、011
、3
r--
、100
、4
r-x
、101
、5
rw-
、110
、6
rwx
、111
、7
chmod 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 [root@study /] -rw-r--r--. 1 root root 541 4月 9 21:34 txt [root@study /] [root@study /] -rw-rw-r--. 1 root root 541 4月 9 21:34 txt [root@study /] [root@study /] -rw-r--r--. 1 root root 541 4月 9 21:34 txt [root@study /] [root@study /] -rwxr-xr-x. 1 root root 541 4月 9 21:34 txt [root@study /] [root@study /] -rw-rw----. 1 root root 541 4月 9 21:34 txt
chown
chgrp
umask
install 1 2 3 4 5 6 7 8 9 install [options] [-s] [--strip] source dest install [options] [-s] [--strip] source ... directory install [options] [-d,--directory] directory...
mktemp 1 2 3 4 5 6 [root@study /] [root@study /] /tmp/ptfJw0h
Shell编程
命令的堆积而已
编写脚本 第一行指定解释器路径,用于指明解释执行当前脚本的解释器程序文件,常用的有:#!/bin/bash
、#!/usr/bin/python
、#!/usr/bin/perl
,脚本文件为 .sh
解释器会自动忽略空白行和加 #
的注释行
运行脚本 第一种:chmod +x file.sh
、./file.sh
第二种:bash file.sh
bash的配置文件 profile 为交互式登录的 shell 进程提供配置
仅管理员可修改
全局:/etc/profile
, /etc/profile.d/*.sh
用户:~/.bash_profile
功能:
用于定义环境变量
运行命令或脚本
bashrc 为非交互式登录的 shell 进程提供配置
全局:/etc/bashrc
用户:~/.bashrc
功能:
定义本地变量
定义命令别名
交互式登录
直接通过某终端输入账号密码打开的 shell 进程
使用 su 命令: su - USERNAME,或者使用 su -l USERNAME执行的登录切换
非交互式登录
su USERNAME 执行的登录切换
图形界面下打开的终端
运行脚本
文本处理 grep 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 grep [options] PATTERN [FILE...] grep [options] [-e PATTERN | -f FILE] [FILE...] [reajason@study ~]$ grep "UUID" /etc/fstab UUID=4da0c9b1-d833-434b-a700-6abe448403ec /boot [reajason@study ~]$ grep "root" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [reajason@study ~]$ grep -A 1 "root" /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin -- operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin [reajason@study ~]$ grep -B 1 "root" /etc/passwd root:x:0:0:root:/root:/bin/bash -- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin [reajason@study ~]$ grep -C 1 "root" /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin -- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin
wc 1 2 3 4 5 6 7 8 [reajason@study ~]$ wc /etc/passwd 43 87 2271 /etc/passwd
cut
sort
uniq
diff
patch
Vim编辑器 基本模式
编辑模式
输入模式
末行模式
打开文件 模式转换 编辑模式 -> 输入模式 1 2 3 4 5 6 i :insert,在光标处输入a :append,在光标后方一个字符输入 o:在光标所在处下方新的一行输入I :在光标所在处的行首输入A :在光标所在处的行尾输入 O:在光标所在处上方新的一行输入
输入模式 -> 编辑模式
编辑模式 -> 末行模式
末行模式 -> 编辑模式
打开文件 vim file
、vim +n file
、vim +/reg file
关闭文件 1 2 3 4 5 6 ZZ 保存并退出:q 退出:q! 强制退出,不保存:wq! 保存并退出:x 保存并退出:w /PATH /FILE 另存为
光标跳转 字符间跳转
单词间跳转 1 2 3 w: 下一个单词的词首e: 当前或后一个单词词尾b: 当前或前一个单词词首
行首行尾跳转 1 2 3 ^: 跳转到行首第一个非空白字符 0: 跳转至行首 $: 跳转至行尾
行间跳转 1 2 3 nG: 跳转到第 n 行gg: 跳转第一行G: 跳转最后一行
句间跳转
段间跳转
翻屏 1 2 3 4 5 Ctrl+f: 向下翻一屏 Ctrl+b: 向上翻一屏 Ctrl+d: 向下翻半屏 Ctrl+u: 向上翻半屏 Enter: 按行向后翻
编辑命令 字符编辑 1 2 3 x: 删除光标所在处的字符#x: 删除光标处起始的#个字符 xp: 交换光标所在处的字符与其后面的字符的位置
替换命令
删除命令 1 2 3 4 5 6 7 d$: 删除光标所在处到行尾 d^: 删除光标所在处到行首 dw: de: db: dd: 删除光标所在一整行
粘贴命令 1 2 p: 整行粘贴则在下方另起一行,否则直接粘贴在其后P: 整行粘贴则在上方另起一行,否则直接粘贴在其前
复制命令 1 2 3 y: 复制,类似于 d 命令yy: 复制一整行
改变命令
可视化模式
撤销操作
末行模式
内建命令行接口
地址定界 1 2 3 4 5 #:第 # 行 #,#:第 # 到 # 行 #,+#:第 # 行 偏移 # 行 %:全文 /reg/:第一次被匹配的文本
查找 1 2 3 4 /reg:从光标所在处往后查找所有匹配字符 ?reg:从光标所在处往前查找所有匹配字符n :下一个N :上一个
查找并替换 1 2 3 4 s/要查找的内容/ 替换的内容/修饰符 修饰符:i:忽略大小写 g:全局替换
多文件模式 1 2 3 4 5 6 7 :next 下一个文件:prev 前一个文件:last 最后一个:wqall 保存所有文件并推出:wall 保存所有文件:qall 退出所有文件
多窗口机制 1 2 3 4 5 -o:水平分割窗口 -O:垂直分割窗口 Ctrl+w,arrow:切换 Ctrl+w,s:水平分割 Ctrl+w,v:垂直分割
定制Vim 1 2 3 4 5 6 7 8 9 10 set number(set nu):显示行号set nomber(set nonu):取消显示行号set ai:自动缩进set noai:取消自动缩进set hlsearch:高亮搜索set nohlsearch:取消高亮搜索 syntax on:语法高亮 syntax off:取消语法高亮set lc:忽略大小写set nocl:取消忽略大小写
文件查找 locate 依赖于事先构建好的索引库
系统自动实现(周期性任务)
手动更新数据库(updatedb)
工作特性
1 2 3 -b:只匹配 basename -c:统计出多少符合条件的数量 -r:使用正则表达式
find 工作特性
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 find [OPTION] [查找起始路径][查找条件][处理动作]- name pattern:查找文件名(精确查找) pattern 为 gloB 通配符- iname pattern:不区分大小写- user USERNAEM:查找属主- group GROUPNAME:查找属组- uid UID:查找属主 uid- gid GID:查找属组 gid- nouser:查找没有属主- nogroup:查找没有属组- type TYPE:查找文件类型 f:普通文件 d:目录文件 l:符号链接文件 b:块设备文件 c:字符设备文件 p:管道文件 s:套接字文件- size [+|-] - atime/-amin [+|-] 根据访问时间查找- mtime/-mmin [+|-] 根据修改时间查找- ctime/-cmin [+|-] 根据改变时间查找- prem mode 处理动作: 默认动作为 -print- ls:输出文件详细信息- delete:删除查找的文件- fls /PATH:ls的输出信息保存指定文件- ok COMMAND {}\; :对查找的每个文件执行命令
特殊权限 SUID 默认情况下,用户发起的进程,进程的属主是其发起者,因此其以发起者的身份在运行。如果此程序拥有 SUID 权限(u=rws),则程序运行为进程时,进程的属主不是发起者,而是程序文件自己的属主。
SGID 当目录属组有写权限时,且有 SGID 权限时(g=rws),那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组。
STIKY 对于属组或全局可写得到目录,组内的所有用户或系统上的所有系统的所有用户对此目录中都能创建新文件或删除所有的已有文件,如果此类目录设置 Stiky 权限(o=rwt),则每个用户能创建新文件,且只能删除自己的文件。
facl 额外赋权机制,另一层让普通用户能控制赋权给另外的用户或租的赋权机制
1 2 3 4 5 6 7 8 9 10 getfacl FLIE setfacl -m u:USERNAME:MODE FILE setfacl -m g:GROUPNAME:MODE FILE setfacl -x u:USERNAME FILE setfacl -x g:GROUPNAME FILE