------------1------------
-
root用户
-
是一个特殊的管理账号,也可以成为超级管理员
-
root用户对系统有完全控制的权限
-
对系统的损害会无限大
-
在工作中,如果没有特殊的必要,尽量不要使用root
-
-
普通用户
-
权限有限
-
对系统的损害会小
-
终端
分类
-
设备终端
-
物理终端
-
虚拟终端 ctrl+alt+f[1-6] /dev/tty#
-
图形终端 /dev/tty7
-
串行终端
-
伪终端 通过ssh远程连接的 /dev/pts/#
-
查看终端的命令 tty
-
查看ip地址的命令 ip addr
交互式接口
启动终端以后,在终端设备上附加的一个应用程序
-
GUI(桌面)
-
CLI command line
-
powershell
-
sh
-
bash(linux,mac默认的程序)
-
zsh
-
csh
-
tcsh
-
bash
bash是linux系统的用户界面,提供了用户和操作系统之间的交互,它接收用户的输入,让它送给操作系统执行
-
目前是linux和mac上默认的shell
-
centos默认使用
-
显示系统当前使用的shell echo $SHELL
-
查看系统内可以使用的shell cat /etc/shells
-
ctrl +d 快速终止当前的连接
-
切换shell chsh -s shell
修改ssh连接慢的步骤
echo "UseDNS no" >> /etc/ssh/sshd_config
systemctl restart sshd
命令提示符
[root@localhost ~]#
管理员是# 普通用户时$
显示提示符格式
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
\u 代表当前登录的用户
\h 代表当前主机的主机名
\W 代表当前的目录
0表示默认字体,1表示加粗,4在字体下方加下划线 5 闪烁 7 代表突出显示
31-37 字体颜色
40-47 表示背景颜色
echo 'PS1="\[\e[1;35mm\][\u@\h \W]\\$\[\e[0m\]"' >> /etc/profile.d/ps.sh #永久生效
命令
执行命令: 输入命令回车
内部命令:shell 自带的命令
-
help 显示所有的内部命令
外部命令:第三方提供的命令
查看命令的类型: type
[root@localhost ~]#type echo
echo is a shell builtin
[root@localhost ~]#type top
top is /usr/bin/top
别名
-
查看当前所有的别名 alias
-
自定别名 alias cdetc='cd /etc'
-
取消别名 unalias cdetc
-
设置别名只对当前的终端有效
-
设置所有用户都可以用 /etc/bashrc
-
只对当前用户有效 ~/.bashrc
-
执行本身命令
-
\command
-
"command"
-
'command'
-
path
-
命令格式
command [options.....] [args...]
command 命令本身
options:启动或者关闭命令里面的某些功能
-
长选项:--help --color
-
短选项: -i -l
args:命令的作用体,一般情况下是目录或者文件,用户名等等
注意:
-
短选项是可以合并
-
空格隔开
-
ctrl+c 结束命令的执行
-
在同一行执行多个命令用;隔开
-
一个命令可以在多行显示用\连接
获取命令的帮助信息
内部命令:
-
help command
-
man bash
外部命令:
-
command -h
-
command --help
-
man coomand
-
官方文档
[root@localhost ~]#python --help
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
[] 可选项
<> 表示变化的数据
... 表示列表
a|b|c 或者
-abc 表示-a -b -c
{} 表示分组
man
1 Executable programs or shell commands #用户命令
2 System calls (functions provided by the kernel) # 系统调用
3 Library calls (functions within program libraries) # 库的调用
4 Special files (usually found in /dev) #设备文件与特殊文件
5 File formats and conventions eg /etc/passwd # 配置文件格式
6 Games #游戏
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) # 杂项
8 System administration commands (usually only for root) # 管理类的命令
9 Kernel routines [Non standard] # 内核的API
退出q
翻屏 空格
翻行 回车
man 章节 passwd
bash 快捷键
-
ctrl+l 清屏 相当于clear
-
ctrl+o 执行当前的命令,并显示当前的命令
-
ctrl+s 锁屏
-
ctrl+q 解锁
-
ctrl+c 终止命令
-
ctrl+z 挂起命令
-
ctrl+a 光标移动到行首,相当于Home
-
ctrl+e 光标移动到行位,相当于End
-
ctrl+xx 在开头和当前光标所在位置跳转
-
ctrl+k 删除光标后的文字
-
ctrl+u 删除光标前的文字
-
alt+r 删除正行
tab 键
-
命令补全
-
内部命令
-
外部命令:根据环境变量定义的路径,从前往后依次查找,自动匹配第一个查找到的内容
-
如果用户给的命令只有唯一一个匹配,则直接补全
-
如果有多个匹配,则需要在按tab键将所有匹配到的结果展示出来
-
-
目录补全
-
把用户给定的字符作为文件的开头,如果有唯一一个匹配则直接补全
-
如果有多个匹配,则需要再次按tab键把所有的匹配到的结果展示出来
-
引号
[root@localhost ~]#name=alexdsb
[root@localhost ~]#echo "$name"
alexdsb
[root@localhost ~]#echo '$name'
$name
[root@localhost ~]#echo "wo shi `tty`"
wo shi /dev/pts/2
[root@localhost ~]#tty
/dev/pts/2
[root@localhost ~]#echo "wo shi $(tty)"
wo shi /dev/pts/2
命令历史
-
可以使用上下箭头来查找之前执行过的命令
-
存放文件是~/.bash_history
-
执行的命令是history
-
执行上一条命令
-
上箭头
-
!!
-
!-1
-
ctrl+p 回车
-
-
调用上一条命令的最后一个值 esc .
-
!# 指定第多少条命令
-
!-# 指定倒数第#条命令
-
!string 用来最近一次匹配到的命令(从下往上)
-
ctrl+r 搜索命令
-
ctrl+g 取消搜索
-
# 显示最后#条命令
命令展开
touch file{1..20}
seq 0 2 10
echo file{1..20..2}
echo 回显
echo -e 'dadasda\ndasdasd' echo -e '\a' #播放声音
查看用户登录信息
[root@localhost ~]#whoami # 显示当前的登录用户 root [root@localhost ~]#who am i #显示当前登录用户的详细信息 root pts/2 2019-08-22 15:54 (192.168.21.1) [root@localhost ~]#w 显示所有的用户并显示执行的命令 16:27:54 up 5:19, 9 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty2 11:37 4:48m 0.02s 0.02s -bash wu tty3 11:39 4:48m 0.02s 0.02s -bash root :0 :0 11:30 ?xdm? 1:28 0.36s /usr/libexec/gnome-session-binary --session gnome-classi root pts/0 :0 11:35 4:43m 0.03s 0.03s bash root pts/1 192.168.21.1 12:11 4:03m 0.02s 0.02s -bash root pts/2 192.168.21.1 15:54 2.00s 0.18s 0.03s w wu pts/3 192.168.21.1 12:27 2:26 0.05s 0.05s -bash
date
[root@localhost ~]#date 显示当前的时间 Thu Aug 22 16:30:06 CST 2019 Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] [root@localhost ~]#date 010923102018 #修改时间 Tue Jan 9 23:10:00 CST 2018 [root@localhost ~]#date Tue Jan 9 23:10:18 CST 2018 [root@localhost ~]#ntpdate time.windows.com #同步网络服务器时间 unix元年 1970-01-01 [root@localhost ~]#date Thu Aug 22 16:35:44 CST 2019 [root@localhost ~]#date Thu Aug 22 16:35:47 CST 2019 [root@localhost ~]#date Thu Aug 22 16:35:48 CST 2019 [root@localhost ~]#date +%a Thu [root@localhost ~]#date +%A Thursday [root@localhost ~]#date +%F 2019-08-22 [root@localhost ~]#date +%H 16 [root@localhost ~]#date +%I 04 [root@localhost ~]#date +%m 08 [root@localhost ~]#date +%d 22 [root@localhost ~]#date +%M 38 [root@localhost ~]#date +%h Aug [root@localhost ~]#date +%c Thu 22 Aug 2019 04:38:42 PM CST [root@localhost ~]#date +%T 16:39:01 [root@localhost ~]#date +%y 19 [root@localhost ~]#date +%Y 2019 [root@localhost ~]#date +%Y/m/%d 2019/m/22 [root@localhost ~]#date +%Y/%m/%d 2019/08/22 [root@localhost ~]#date +%s 1566463197 [root@localhost ~]#date +%W 33
显示时区
[root@localhost ~]#timedatectl Local time: Thu 2019-08-22 16:42:43 CST Universal time: Thu 2019-08-22 08:42:43 UTC RTC time: Thu 2019-08-22 08:42:43 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a [root@localhost ~]#timedatectl set-timezone Asia/Tokyo
日历
cal
cal -y 一年的日历
cal # 显示某一年的日历
关机重启
-
shutdown 默认1分钟之后关机
-
shutdown -c 取消关机
-
-
shutdow -r 重启
-
TIME
-
now 立即
-
+n n分钟之后
-
hh:mm 指定时间
-
-
关机命令
-
poweroff
-
halt
-
init 0
-
-
重启
-
reboot
-
-f 强制
-
-p 关机
-
-
-
------------2------------
-
文件和目录被组织成一颗倒置的树状结构
-
文件系统从根开始,“/”
-
文件名称严格区分大小写
-
隐藏文件以"."开头
-
路径的分隔符为"/"
文件命名规范
-
文件字符最长为255个字符
-
包括路径在内文件名称最长为4095个
-
颜色表示
-
蓝色 ---> 文件夹
-
绿色 --> 可执行文件
-
红色 --> 压缩文件
-
蓝绿色 --> 链接文件
-
灰色-->其他文件
-
白色 --> 文件
-
-
除了斜杠和NULL,其他所有字符都可以使用
-
对大小写敏感
文件系统结构
-
/boot 引导文件的存放位置,内核文件、引导加载器都在此目录
-
/bin 所有的用户都可以使用的命令
-
/sbin 管理类的命令
-
/lib 启动时程序使用的基本库文件 .so结尾
-
/lib64 专门存放X86_64系统上得辅助库文件
-
/etc 存放配置文件
-
/home/USERNAME 普通用户的家目录
-
/root 管理员的家目录
-
/media 便携式移动设备的挂载点
-
/mnt 临时文件的挂载点
-
/dev 设备文件和特殊文件的存放位置
-
/opt 第三方的应用的安装位置
-
/tmp 临时文件的存放位置
-
/usr 存放安装程序
-
/var 存放经常变化的文件,比如日志
-
/proc 存放内核启动和进程相关的虚拟文件
-
/sys 输出当前系统上的硬件相关的文件
-
/srv 系统上允许的服务用到的数据
linux应用程序的组成
-
二进制文件
-
/bin
-
/sbin
-
/usr/bin
-
/usr/sbin
-
/usr/local/bin
-
/usr/local/sbin
-
-
库文件
-
/lib
-
/lib64
-
/usr/lib
-
/usr/lib64
-
/usr/local/lib
-
/usr/local/lib64
-
-
配置文件
-
/etc
-
/etc/name
-
/usr/local/etc
-
-
帮助文件
-
/usr/share/man
-
/usr/share/doc
-
/usr/local/share/man
-
/usr/local/share/doc
-
绝对路径和相对路径
-
绝对路径
-
以根开始
-
完整的文件的存放位置
-
可以读取到任何一个文件或者文件夹
-
-
相对路径
-
不以根开始
-
相对当前的位置来决定
-
可以简短的表示一个文件或者文件夹
-
. 当前目录
-
.. 父级目录
-
目录名和基名
[root@localhost log]#basename /etc/sysconfig/network-scripts/ifcfg-ens33
ifcfg-ens33
[root@localhost log]#basename /etc/sysconfig/network-scripts
network-scripts
[root@localhost log]#dirname /etc/sysconfig/network-scripts
/etc/sysconfig
[root@localhost log]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts
切换目录
cd 切换目录 change directory
-
可以使用相对路径
-
可以使用绝对路径
切换到家目录
[root@localhost log]#cd
[root@localhost ~]#
切换到上一次的目录
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cd -
/root
[root@localhost ~]#cd -
/etc/sysconfig/network-scripts
显示当前的工作目录
pwd print working directory
[root@localhost network-scripts]#pwd
/etc/sysconfig/network-scripts
# 查看链接的真正目录
[root@localhost /]#cd lib
[root@localhost lib]#pwd -P
/usr/lib
列出目录或者文件
ls list
命令格式:Usage: ls [OPTION]... [FILE]...
ls -a 显示所有文件
ls -l 以长格式显示文件列表
total 21104
-rw-r--r--. 1 root root 0 Aug 22 17:21 10
权限 硬盘的引用次数 属主 属组 大小 访问时间 文件名称
ls -R 递归显示目录
ls -d 显示目录本身
ls -1(数字1) 文件分行显示
ls -S 安装文件大小排序
ls -r 倒序显示
ls -t 按照时间来排序
ls -lh 显示人类易读的方式
ls -d */ 显示当前目录下的文件夹
l. 只显示隐藏文件
linux下的目录类型
-
- 用来表示文件
-
d 用来表示目录
-
b 块设备
-
c 字符设备
-
l 表示符号链接文件
-
s socket套接字
查看文件状态
File: ‘anaconda-ks.cfg’
Size: 1747 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33574992 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2019-08-22 12:09:03.288000381 +0900 # 访问时间
Modify: 2019-08-22 11:47:12.262947345 +0900 # 修改时间
Change: 2019-08-22 11:47:12.262947345 +0900 # 改动时间
atime 访问时间 查看文件内容就会改变
mtime 修改时间 改变内容发生变化
ctime 改动时间 元数据发生变化
touch
创建空文件和刷新时间,如果文件存在,则刷新时间,如果文件不存在,则创建文件
-a 只修改atime和ctime
-m 只修改mtime和ctime
文件通配符
-
* 所有
-
? 匹配的是任意单个字符
-
~ 表示用户的家目录
-
[123] 其中一个
-
[^123] 取反
-
[0-9] 表示数字
-
file[a-z] 字母(有坑)缺少Z
-
file[A-Z] 字母(有坑)缺少a
-
[:lower:] 小写字母
-
[:upper:] 大写字母
-
[:alpha:] 所有字母 a-zA-Z
-
[:alnum:] 表示字母和数字
-
[:digit:] 表示数字
创建目录
mkdir 创建目录
-
-p 递归创建
-
-v 显示详细过程
显示目录树
安装:yum install -y tree
tree 显示目录树
-d 只显示文件夹
-L # 只显示#层
删除目录
rmdir 只能删除非空目录
-p 递归删除空父目录
-v 显示删除过程
rm -rf 删除非空目录
复制文件和文件夹
cp copy 默认情况下是别名,原来本身命令是不提示覆盖的
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
-i 显示提示信息
-n 不覆盖
-r -R 递归复制
-d 只复制链接文件,不复制源文件
-a 归档
-v 显示过程
-b 备份原来的文件
--backup=number 备份文件加上数字
-p 保留原来的属性
-
如果源文件是文件的话
-
目标是文件
-
目标文件如果不存在的话,则新建目标文件,并把内容写到目标文件中
-
如果目标文件存在的话,本来的命令是直接覆盖,建议使用-i来提示用户
-
-
目标是文件夹
-
在文件夹中新建一个同名的文件,并把文件内容写到新文件中
-
-
-
如果源文件为多个文件的话
-
目标必须是文件夹,文件夹必须存在,其他情况都会报错
-
-
如果源文件是文件夹的话
-
目标文件是文件: 不可以
-
目标文件必须是文件夹,必须使用-r选项
-
如果目标文件不存在:则直接创建目标文件夹,并把源文件夹的数据都复制到目标文件夹
-
如果目标文件存在:
-
如果是文件的话,则报错
-
如果是文件夹:则在目标文件夹中创建同名文件夹,并把所有数据都复制到新文件夹
-
-
移动、重命名
mv move
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
-i 提示
-f 强制
-b 备份
--backup=number 备份后面加数字
-v 显示过程
删除
rm remove
Usage: rm [OPTION]... FILE... -i 提示 -r -R 递归删除 -f 强制删除 rm -rf 慎用 rm -rf /* cd / rm -rf *
链接
软链接
-
相当于windows的快捷方式
-
创建命令 ln -s 源文件 目标文件
-
可以对目录做软链接
-
指向另外的一个文件或者目录的路径,大小是路径的长度的字符
-
对磁盘引用次数没有影响
-
可以跨分区
-
源文件发生改变,软链接会跟着发生变化
-
源文件删除,软链接不能访问
硬链接
-
磁盘引用次数会发生变化
-
指向的是硬盘上的同一块区域
-
磁盘的引用数会随着硬链接次数来增加
-
不能对目录做硬链接
-
不能跨越分区
-
源文件发生改变,硬链接也会跟着变化
-
源文件删除以后,硬链接可以访问
查看文件类型
file
输入和输出
-
标准输入 默认是来自键盘的输入 stdin 0
-
标准输出 默认输出到终端窗口 stdout 1
-
标准错误输出 默认输出到终端窗口 stderr 2
I/O重定向
> 覆盖
-
> 将标准输出重定向到文件中
-
2> 将错误输出重定向到文件中
-
&> 将所有的输出都重定向到文件中
禁止、允许覆盖
-
禁止覆盖 set -C
-
允许覆盖 set +C
>> 追加
>> 将标准输出追加到文件中
2>> 将错误输出追加到文件中
&>> 将所有输出追加到文件中
标准输入和错误输入分开保存
[root@localhost ~]#ls f 45yuio > log.log 2> error.log [root@localhost ~]#cat log.log f [root@localhost ~]#cat error.log ls: cannot access 45yuio: No such file or directory
合并所有的输出
-
&> 覆盖重定向
-
&>> 追加重定向
-
command > file 2>&1
-
command >> file 2>&1
-
():合并多个文件的输出
-
/dev/null 黑洞
从文件导入stdin
tr 字符替换
-t 截断 -d 删除 -s 压缩,去重 -c 取反 [root@localhost ~]#tr 'a-z' 'A-Z' < /etc/issue \S KERNEL \R ON AN \M [root@localhost ~]#tr 'a-z' 'A-Z' qwertyy QWERTYY 12345678 12345678 ASDFGHJ ASDFGHJ qwertyuio QWERTYUIO ^C [root@localhost ~]#tr ab 12 ab 12 abb 122 asdfghjkl 1sdfghjkl ^C [root@localhost ~]#tr abc 12 ab 12 abc 122 abc 122 ^C [root@localhost ~]#tr ab 123 ab 12 abb 122 avc 1vc qbc q2c abc 12c [root@localhost ~]#tr -t abc 12 abc 12c ab 12 [root@localhost ~]#tr -d abc qwertyui qwertyui an^H^H n abc artyibrtyuiocrtyuiop rtyirtyuiortyuiop ^C [root@localhost ~]#tr -d abc < /etc/issue \S Kernel \r on n \m [root@localhost ~]#cat /etc/issue \S Kernel \r on an \m [root@localhost ~]#tr -s a abc abc aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabc abc ^C [root@localhost ~]#tr -sc a aasdaaaaaaa aasdaaaaaaa ^[[A^H^H^C [root@localhost ~]#tr -sc a aaaaaaaaabbbbbbbbbbbbbccccccccddddddddddd aaaaaaaaabcd [root@localhost ~]#tr -dc a aaaaaaaaaaaabbbbbbbbbb asdfghjkqwertyuiozxcvbnmxcvbnm,. aaaaaaaaaaaaa ctrl+d 结束 [root@localhost ~]#tr -dc "a\n" asdfghjk a wertyujk;l' asdfghj a [root@localhost test]#tr -d a < issue > issue 处理完成以后不能写会到源文件,要写到新的文件中 [root@localhost test]#seq 1 10 > b [root@localhost test]#cat b 1 2 3 4 5 6 7 8 9 10 [root@localhost test]#tr -d "\n" < b 12345678910[root@localhost test]#tr -d "\n" < b [root@localhost test]#tr "\n" " " <b 1 2 3 4 5 6 7 8 9 10 [root@localhost test]#tr "\n" " " <b >c [root@localhost test]#cat c 1 2 3 4 5 6 7 8 9 10 [root@localhost test]#tr " " "\n" <c 1 2 3 4 5 6 7 8 9 10
多行发送给stdin
# 第一种方式 [root@localhost test]#cat > f1 qwert wertyui wertyui wertyuiopasdfghjk sdfghjkl sdfyhjkl;sdfghjkl;xcvb # 第二种方式 [root@localhost test]#cat > f2 <<EOF > qwerty > qwertyu > wertyui > qwertyu > EOF EOF 不是必须得,只要两个相同就可以
管道
管道使用“|”来表示
命令1|命令2|命令3
-
把命令1的输出结果当做命令2的输出结果,把命令2的输出结果当成命令3的输入结果
-
默认情况下,管道只能传送标准输出
-
如果需要把错误输出也传递,则需要|&
-
一般用来组合多个命令
-
有一些命令是不接受管道的
[root@localhost test]#ls f1|tr 'a-z' 'A-Z' F1 [root@localhost test]#ls f ls: cannot access f: No such file or directory [root@localhost test]#ls f|tr 'a-z' 'A-Z' ls: cannot access f: No such file or directory [root@localhost test]#ls f|&tr 'a-z' 'A-Z' LS: CANNOT ACCESS F: NO SUCH FILE OR DIRECTORY [root@localhost test]#echo file{1..20}|touch touch: missing file operand Try 'touch --help' for more information.
------------3------------
-E 显示结尾的$符
-n 对显示的每一行进行编号
-b 对非空行进行编号
-s 对连续的空行进行压缩
less 分屏显示文本
向下翻一屏 空格
向下翻一行 回车
q 退出
/ 文本 搜索文本
n 向下查找 N向上查找
less 是man命令的默认分页器
more 分页显示文件
默认情况下显示读取的百分比
读取完成自动退出
q 退出
-d 显示翻屏和退出的提示
head 显示文件的前面的内容
默认显示前10行
-# 显示前#行
-n # 显示前#行
-c # 显示前#个字符
tail 显示文件的后面的内容
默认显示后10行
-# 显示后#行
-n # 显示后#行
-c # 显示后#个字符,换行符也是一个字符
cut 切割
cut OPTION... [FILE]...
-c 按照字符切割
tail passwd |cut -c2-5
-d 指定切割符,默认是tab
-f # 显示第#个字段
#,#,# 显示离散的多个
#-# 表示连续的
1-5,7 可以结合使用
tail passwd |cut -d: -f1-5,7
tail passwd |cut -d: -f1-5
tail passwd |cut -d: -f1,3,5
paste 合并
默认是相同行合并到一起,默认是tab键
-d 执行间隔符
-s 将所有的行按照列来显示
paste a.txt b.txt
paste -d: a.txt b.txt
paste -s a.txt b.txt
wc 用来对文本进行统计
[root@localhost test]#wc b.txt
4 5 20 b.txt
行数 单词数 字节数 文件名
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
-m 只显示字符数
-L 显示文件中最长行的长度
sort 排序
Usage: sort [OPTION]... [FILE]...
or: sort [OPTION]... --files0-from=F
默认是按照字母排序
-r 倒序
-R 随机排序
-n 按照数字排序
-f 忽略大小写
-t 指定分隔符
-k # 指定按照第#个字段进行排序
sort -t: -k3 passwd
sort -nt: -k3 passwd
uniq合并相同的行
-
相邻
-
完全一样
-c 显示相同的行出现的次数
-d 只显示重复的行
-u 显示从没有重复过的行
cut -d" " -f4 d|sort |uniq -c
pv page
uv user
diff 对比文件
[root@localhost test]#echo "123" >> f
[root@localhost test]#diff d f
11a12
> 123
[root@localhost test]#echo "1234" >> d
[root@localhost test]#diff d f
12c12
< 1234
---
> 123
chown 用来修改所有者和组
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
or: chown [OPTION]... --reference=RFILE FILE...
chown wu c 修改属主
chown wu:wu c 修改属主和属组
chown root.root c
chown :wu c 直接属组
chown -R wu test 递归修改
chown --reference=c d
chgrp 修改文件的属组
Usage: chgrp [OPTION]... GROUP FILE...
or: chgrp [OPTION]... --reference=RFILE FILE...
权限
9位表示权限
3组
3位表示一组
--- --- ---
-
文件权限可以读以下定义
-
属主 u
-
属组 g
-
其他 o
-
全部 a
-
-
每个文件的权限
-
r 读
-
w 写
-
x 执行
-
-
对于文件来说
-
r 可以使用文本查看工具来查看里面的内容
-
w 可以修改文本的内容
-
x 执行可以直接./file
-
-
对于目录来说
-
r 可以使用ls等文件查看的命令查看
-
w 可以创建文件,也可以删除
-
x 可以cd进入
-
-
数字表示
--x
001 1
-w-
010 2
r--
100 4
rw-
110 6
rwx
111 7
r-x
101 5
-wx
011 3
修改权限
-
可以直接修改某一类用户的权限
chmod u+x c 增加 chmod u-x c 删除 chmod u=r c 直接赋值
shabang ---》 解释器
-
可以直接使用数字表示
-
可以基于某个文件来修改
设定特殊权限
chattr +i 不能删除、不能修改、不能变更
lsattr 查看属性
chattr +a 只能追加数据
vi/vim
打开文件
vim [option] .... file....
+# 直接定位到第#行 +/pattern 打开文件后,直接定位到第一个匹配到patter的地方 -b 以二进制方式打开文件 -d file1 file2 对比打开多个文件 -m file 只读方式打开文件 -e 直接以末行模式打开
模式
-
命令模式:可以光标,可以粘贴、复制文本,默认
-
插入模式或者编辑模式:可以修改文本
-
末行模式(扩展命令模式):保存、退出等等
-
esc 退出当前的模式
模式之间切换
-
命令模式- 插入模式
-
i 光标所在处插入
-
I 在当前光标所在的行的行首插入
-
a 光标所在位置的后面插入
-
A 在当前光标所在的行尾插入
-
o 在当前光标所在的行的下一行(新开)插入
-
O 在当前光标所在的行的上一行(新开一行)插入
-
-
插入模式- 命令模式
-
esc
-
-
命令模式 -- 末行模式
-
:
-
-
末行模式 -- 命令模式
-
esc esc
-
esc enter
-
关闭文件
-
末行模式
-
:w 保存
-
:q 退出
-
:wq 保存并退出
-
:q! 强制退出
-
:wq!强制保存退出
-
:x 保存并退出
-
-
命令模式
-
ZZ 保存退出
-
ZQ 不保存退出
-
扩展命令行模式
-
按":" 来进入
-
w 写入
-
q 退出
-
wq 保存并退出
-
q! 强制退出
-
x 保存并退出
-
r file 读入文件
-
w file 另存为
-
!command 直接执行命令
-
r!command 直接把命令的结果写到文件中
命令模式跳转
-
字符之间跳转
-
l 向右
-
h 向左
-
j 向下
-
k 向上
-
-
单词间跳转
-
w 下一次的单词的词首
-
e 当前词的词尾或者下一个单词的词尾
-
b 当前词的词首或者上一词的词首
-
# command 直接跳转#个单词
-
-
页面间跳转
-
H 页首
-
L 页尾
-
M 页中
-
zt 将光标所在行移动到屏幕的顶端
-
zb 将光标所在行移动到屏幕的底部
-
zz 将光标所在行移动到屏幕的中间
-
-
行首行尾之间跳转
-
^ 跳转到当前光标所在行的第一个非空字符
-
0(数字) 跳转到行首
-
$ 跳转到行尾
-
-
行间移动
-
#G 跳转到第#行
-
在命令扩展模式下,直接:# 跳转到对应的行
-
G 直接到最后一行
-
gg 跳转到第一行
-
1G 跳转到第一行
-
-
段落之间跳转(空行)
-
{ 上一段
-
} 下一段
-
-
翻屏
-
ctrl+f 向文件尾部翻一屏
-
ctrl+b 向文件首部翻一屏
-
ctrl+d 向文件尾部翻半屏
-
ctrl+u 向文件首部翻半屏
-
命令模式编辑
-
字符编辑
-
x 删除光标所在处的字符
-
#x 删除#个字符
-
xp 将光标所在处的字符和后面的字符互换位置
-
~ 将光标所在的位置大小写互换
-
J 删除当前行的换行符
-
-
替换
-
r 替换当前光标所在处的字符
-
R 进入替换模式
-
-
删除
-
d 删除,需要跟字符跳转结合
-
d$ 删除到行尾,删除当前位置
-
d0 删除到行首,当前位置不删除
-
d^ 删除到非空字符
-
dw 删除一个单词
-
de 向后删除一个单词
-
db 向前删除一个单词
-
dd 删除正行
-
# dd 删除#行
-
dG 删除到结尾
-
dgg 删除到开头
-
D 相当于d$
-
-
复制
-
y,也可以跟字符跳转结合
-
y$
-
y0
-
y^
-
yw
-
ye
-
yb
-
yy 一正行
-
#yy 复制#行
-
yG 复制到结尾
-
ygg 复制到开头
-
Y 复制整行
-
-
粘贴
-
p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面
-
P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面
-
-
改变,删除以后并将模式切换成插入模式
-
c 可以跟光标的跳转做结合
-
c$
-
c0
-
c^
-
cw
-
ce
-
cb
-
#command
-
cc 删除正行并插入
-
C 相当于c$
-
-
#[i|I|a|A|o|O]string esc 将string粘贴#次
-
搜索
-
/pattern 从当前光标往下搜索
-
?pattern 从当前光标往上搜索
-
n 同命令相同的方向
-
N 同命令相反的方向
-
-
撤销
-
u 撤销最近的修改
-
# u 撤销最近的#次修改
-
ctrl +r 撤销之前的撤销动作
-
. 重复最后一次操作
-
#. 最后一次操作重复执行#次
-
命令扩展模式
地址定界
:start,end
# 具体到第#行
#,# 第#行到第#行
#,+n 从第#开始,到第#+n行结束 1,+2 ==>1,3
. 表示当前光标所在的行
$ 表示最后一行
$-1 表示倒数第二行
% 表示全文
/pat1/,/pat2/ 从第一个pat1匹配到的地方,到pat2第一次匹配到的地方
#,/pat/ 从第#行开始,到第一次被pat匹配到的地方
/pat/,$ 从第一次被pat匹配到的到结尾
可以使用的命令
-
d
-
y
-
w file 重新另存为文件
-
r file 将文件的内容写到匹配到的下一行
查找并替换
-
要使用地址定界来进行查找
-
s 在扩展命令模式下使用为替换
-
格式: s/要查找的内容/要替换的内容/装饰器
-
要查找的内容可以使用正则
-
替换的内容不能为正则
-
可以为分组:%s/(nfs.*)/#\1/
-
\1表示第一个分组内的内容
-
\2
-
\3
-
& 可以代表前面匹配到的内容
-
-
装饰器
-
i 忽略大小写
-
g 表示全部替换
-
gc 每一次替换之前都要询问是否替换
-
-
分隔符还可以使用
-
@
-
#
-
可视化
-
v 面向字符
-
V 面向行的
-
ctrl +v 面向块
-
可以结合所有的跳转键进行结合
-
对突出显示部分可以使用删除、复制、变更、过滤、替换、另存为等等
打开多个文件
vim file1 file2 file3
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
:qall 退出全部
:wall 保存全部
:wqall 保存并退出全部
:xall 保存并退出全部
使用多个窗口
vim -o 水平分隔
vim -O 垂直分隔
切换ctrl+w 加上上下左右箭头
单文件切割
ctrl+w,s 水平切割
ctrl+w,v 垂直切割
ctrl+w,q 取消相邻的窗口
ctrl+w,o 取消全部窗口
vim工作特性
配置文件
-
全局有效:/etc/vimrc
-
对当前用户有效: ~/.vimrc
-
行号:set nu 取消 set nonu
-
忽略大小写(搜索) set ic 取消set noic
-
自动缩进(同上一行) set ai 取消set noai
-
设置高亮显示(搜索到的内容) set hls 取消set nohls
-
语法高亮 syntax on 取消 syntax off
-
文件格式
-
windows格式 set fileformat=dos
-
unix set fileformat=unix
-
-
添加标识线: set cul 取消标识线 set nocul
-
获取帮助: set all
-
获取帮助信息:
-
:help
-
:help topic
-
vimtutor
-
------------4------------
是linux里面的一个实时查找工具,通过制定路径完成文件查找
find [options] ..... [查找路径] [查找条件] [处理动作]
查找路径:查找的位置,默认是当前文件夹
查找条件:制定查找的标准,文件名、大小、类型、日期等等
处理动作:对符合条件的文件做什么操作,默认是输出到屏幕上
查找条件
-
根据文件名查找
-
-name 指定名称,可以使用正则
-
-iname 忽略大小写
-
-links n 引用次数为n的文件
-
-regex 后面跟完整路径,而不是文件名, 必须整个路径完全匹配
-
-
制定搜索的层级
-
-maxdepth level 最大的搜索深度,指定的目录为第1层
-
-mindepth level 最小的搜索深度,包括level层
-
-
根据属主、属组来查找
-
-user username 查找属主为username的文件
-
-group groupname 查找属组为groupname的文件
-
-uid id 查找属主为id的文件
-
-gid id 查找属组为id的文件
-
-nouser 查找没有属主的文件
-
-nogroup 查找没有属组的文件
-
-
根据文件类型 -type
-
d 目录
-
f 文件
-
l 符号链接
-
s 套接字
-
b 块设备
-
c 字符设备
-
p 管道文件
-
-
空文件或者空目录
-
-empty
-
-
条件
-
与 -a
-
或 -o
-
非 -not
-
-
摩根定律
-
非(A或者B) 非A 且非B
-
非(A且B)非A或非B
-
-
排除目录
-
-path
-
-
[root@localhost test]#find /etc -name *_config
/etc/ssh/ssh_config
/etc/ssh/sshd_config
[root@localhost test]#find /etc -path /etc/ssh -name *_config -
按照大小来查找
-
-size # (#-1,#] 不包括#-1,包括#
-
-size -# [0,#-1] 包括#-1
-
-size +# (#,......)
-
-
按照时间来查找
-
-atime # [#,#+1)
-
-atime -# (0,#)
-
-atime +# [#+1,....]
-
查找7天以后的文件 find -atime +7
-
-mtime
-
-ctime
-
以分钟为单位
-
-amin
-
-mmin
-
-cmin
-
-
处理动作
-
-print 默认的处理动作,显示在屏幕上
-
-ls 类似于ls -l 显示长格式
-
-delete 删除查找到的文件
-
-fls file 将查找的结果以长格式保存到文件中
-
-ok command {} \; 对每一个查找到的文件执行command命令,在执行命令之前要先提示用户是否要执行
-
-exec command {} \; 对查到的每一个文件执行command命令,不需要确认,一次性交给后面命令处理
xargs
-
有的命令不支持管道
-
命令参数过长
-
xargs 将管道前面的内容一条一条的交给后面命令处理
-
一般会跟find使用
linux三贱客
grep
awk
sed
grep
grep [option] "模式" file
option
--color=auto 对匹配到的行添加颜色
-v 取反
-i 不区分大小写
-n 查找的内容增加行号
-c 打印匹配到的行数
-o 只显示匹配到的文字
-q 静默模式
-A # after 向下显示#行
-B # before 向上显示#行
—C # context 上下分别显示#行
-e 或者 grep -e 'user' -e 'root' passwd
-E 扩展正则表达式
-F 不使用正则表达式
-r 递归
-w 匹配整个单词
正则表达式元字符
-
字符匹配
-
. 任意单个字符
-
[] 匹配指定范围内的任意单个字符 [0-9] [a-z] [A-Z]
-
[^] 取反
-
[:upper:] 大写字母
-
[:lower:] 小写字母
-
[:alnum:] 字母和数字
-
[:alpha:] 大小写字母
-
[:digit:] 数字
-
[:black:] 空白
-
[:punct:] 标点符号
-
-
匹配次数
-
* 表示任意次数
-
.* 任意字符任意次数
-
\? 表示0或者1次
-
\+ 至少一次
-
\{n\} 表示n次
-
\{m,n\} 最少m次,最多n次
-
\{n,\} 至少n次
-
\{,n\} 至多n次
-
-
位置锚定
-
^ 开头
-
$结尾
-
^$ 空行
grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 显示不以#开头并且不是空行
-
-
分组
grep "\(c\|C\)at" a
-
向后引用
-
\1 前面第一个括号出现的内容匹配完成之后再后面在出现一次
-
\2
-
-
扩展正则表达式
-
与正则表达式的区别是不需要转义
-
压缩
gzip
压缩文件
gzip [option]... file
-c 将压缩结果输出到屏幕,保留原来的文件
gzip -c passwd > passwd.gz
-1-9 指定压缩比,默认9
-d 解压
zcat 不解压的情况下查看压缩比内的内容
gunzip 解压
bzip2
bzip [option] file
直接压缩
bunzip2 解压
-k 保留原来的文件
-d 解压
-1-9 指定压缩比
bzcat 不解压的情况下查看压缩包的内容
xz
xz [option] file
unxz 解压
-k 保留原来的文件
-d 解压
-1-9 指定压缩比
xzcat 不解压直接查看
zip
zip [option] zipfile 要压缩的文件
zip -r network.zip /etc/sysconfig/network-scripts
unzip network.zip
tar
归档工具
归档 tar cpvf etc.tar /etc c 创建 v 显示过程 f 指定归档文件 p 把原来的属性也带过来 tar -r -f etc.tar /etc 追加 tar -t -f etc.tar 查看归档文件内的内容 tar xf etc.tar 解压文件 tar xf etc.tar -C -z 使用gzip压缩 -j 使用bzip2压缩 -J 使用xz压缩 --exclude 排除文件
split
split -b 指定大小 文件(只能为文件) 切割以后的名字 -d 指定后缀为数字 -a 指定后缀几位 cat 切割后的文件 > 新文件
------------5------------
-
超级管理员用户 root 0
-
普通用户
-
系统用户: 用来启动系统的一些服务和进程的用户,不可以登陆 1-999(centos7)1-499 (centos6)
-
可登陆用户:能登录系统的用户 1000-65535(centos7)500-65535(centos6)
-
useradd
Usage: useradd [options] LOGIN
useradd -D
useradd -D [options]
普通用户的id是递增,系统用户的id是递减的
-d 用来指定用户的家目录
-g 指定用户组的id
-G 指定用户的附加组
-k 指定复制那个文件夹下的内容,需要和-m一起使用
-m 创建用户的家目录
-c "message" 指定用户的描述信息
-N 不创建同名的组,以users为组
-s 指定用户登录后使用的shell
-u 指定用户的id
—D 显示系统的默认配置
-D [options] 可以修改系统的默认配置
-
相关文件
-
/etc/default/useradd 创建用户的默认文件
-
/etc/skel/* 默认复制的文件
-
用户修改usermode
-c 修改描述信息
-d 修改家目录,默认不会创建新目录,如果想移动家目录,则需要使用-m
-g 修改用户组
-G 修改用户的附加组,默认情况下是替换
-a 追加附加组
-l newname 修改用户的登录名称
-L 锁定用户,不能登录系统,修改密码默认情况下回解锁
-U 解锁用户
-s 修改用户登录后的shell
-u 修改用户的uid
-e 年-月-日 修改用户的过期时间,过期以后不能登录
删除用户 USERDEL
默认删除用户不删除用户的家目录
-r 删除家目录
-f 强制删除
默认情况下,用户登录状态下是不能删除用户,强制删除用户以后,用户还是可以用的
查看用户相关信息id
-g 只显示组id
-G 只显示附加组id
-u 只显示用户id
-n 显示名称,需要和guG来配合使用
切换用户
su [options] [-] [USER [arg]...]
切换用户的方式
-
完整切换:su - username 登录式切换,环境变量等都会切换
-
不完整切换:su username 不会切换用户的环境变量家目录等
-
root切换普通用户不需要密码,非root用户切换需要密码
切换用户执行命令
[root@localhost ~]#su - peiqi -c "whoami"
peiqi
执行本身不能执行的命令
sudo 配置文件为/etc/sudoers
peiqi ALL=(ALL) NOPASSWD:ALL
其中的NOPASSWD 是不需要输入密码
/etc/passwd文件
-
用户名称
-
密码,使用x来占位
-
uid
-
gid
-
描述信息
-
家目录
-
登录后使用的shell
设置密码passwd
passwd [OPTION...] <accountName>
-d 删除指定用户的密码,删除密码之后就不能登录
-l 锁定用户
-u 解锁用户
-e 在下次登录以后强制用户修改密码
-f 强制操作
-x maxday 密码的最长使用时间
-n minday 密码的最短使用时间
-w warnday 密码过期前多长时间提醒
-i inactiveday 密码过期多长时间以后禁用
--stdin 从标准输入读取密码 echo '123'|passwd --stdin peiqi
存放文件/etc/shadow
-
用户名
-
密码 $加密方式(默认sha512)$盐$加密后的字符串$
-
从1970年1月1日到最近一次修改密码经过的时间
-
密码的最短使用时间(0表示随时可以修改)
-
密码的最长使用时间(99999表示永不过期)
-
密码过期多长时间提醒(默认是一周)
-
密码过期多长时间锁定
-
从1970年1月1日开始算起,多长时间后账号失效
密码的复杂性策略
-
必须包括数字、大小写、特殊字符
-
密码必须12位以上
-
不能为弱口令
-
必须为随机密码
-
3个月或者半年修改一次
机器免密登录
ssh-keygen 一路回车 ssh-copy-id 要登录的机器
修改用户密码策略 chage
-E -I -m -M -W change login 可以使用交互式的修改密码策略
chfn 修改用户的个人信息
用户组
-
超级用户组 root 0
-
普通用户组
-
系统用户组 1-999(centos7) 1-499(centos6)
-
可登陆用户组 1000-65535(centos7)500-65535 (centos6)
-
groupadd -g 指定组id -r 创建系统用户组
组的文件
/etc/group
-
组名
-
密码占位
-
gid
-
组成员
/etc/gshadow
-
组名
-
密码
-
组管理员的密码
-
组成员
修改组信息
groupmod
-g 修改gid -n 修改组名
删除组
groupdel 删除组
软件
windows exe
centos(redhat) rpm
rpm: radhat package manager
rpm
yum
包的命名规范
MySQL-python-1.2.5-1.el7.x86_64.rpm 名字-版本(大版本.小版本.修订版)-打包版本.可用的系统.架构.rpm 架构: x86_64 x86 i386 i486 i686 ppc noarch 表示通用
包的来源
-
光盘
-
第三方网站
-
官方网站
-
自己做
-
epel 第三方包的结合地
rpm 包的查询
rpm -q 查询指定的包是否安装 -a all 表示当前系统安装的所有的包 -f filename 查询指定的文件由那个包安装生成 -c 查看指定的包生成了哪些配置文件 -d 查询指定的包生成了哪些文档 -i 查询指定包的详细信息 -l 查询指定的包生成到文件 常用的选项 -qi -qa -ql -qc -qd
yum
yum 会自动解决依赖关系
仓库 存放的是 多个包和包的元数据信息(所在仓库,依赖关系)
仓库的位置:
-
http://
-
https: //
-
ftp: //
-
file: //(本地文件)
-
配置文件存放在/etc/yum.repos.d
yum配置文件
[base] #名称 name=CentOS-$releasever - Base - mirrors.aliyun.com # 描述信息 failovermethod=priority # 定义挑选顺序 priority 按顺序 roundrobin 随机 baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/ enabled ={0|1} 是否启用,1启用,0是不启用 gpgcheck={0|1} 使用校验 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 # 校验文件 默认值 $releasever 发行版 $basearch 系统架构
yum 源
-
阿里
-
163
-
sohu
-
腾讯
-
北大
-
中科大学
-
。。。。
yum命令
-
yum repolist 查看仓库
-
yum list 列出仓库里面所有的包 安装的包前面带@
-
yum install 安装包
-
yum reinstall 重新安装
-
yum update 更新所有的包
-
yum update pkg 更新指定的包
-
yum downgrade 降级
-
yum check-update 检查包是否可以更新
-
yum remove 卸载包
-
yum info pkg 显示包的详细信息
-
yum clean all 删除元数据信息
-
yum makecache 重新构建元数据信息
-
yum search 搜索软件包(包名称、描述信息只要包含就可以搜索出来)
-
yum provides 搜索命令是由哪个包提供的
软件包组
-
yum grouplist 查看包组
-
yum groupinstall 安装
-
yum groupinfo 获取包的信息,查看包组有哪些包组成
-
yum groupupdate 更新
-
yum groupremove 卸载包组
yum选项命令
-y 自动确认
-q 静默模式
源码安装
-
下载 wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz
-
解压文件 tar xf
-
切换目录 cd
-
可以查看帮助信息 README INSTALL 文件
-
安装所需文件
-
编译(检查程序所需的文件)./configure
-
构建安装程序 make
-
安装程序 make install
-
配置环境变量
全双工通信
------------6------------
查看磁盘空间的占用
df
-h 显示人类易读的方式
linux下磁盘命名格式
/dev/sd[a-z]
查看目录的占用空间
du
-s 查看目录
-h 显示人类易读的方式
du -sh /*
dd
dd if=/dev/zero of=file bs=size count=number
if = input file 表示从inputfile里面读取内容
of = output file 表示将读出的数据写入到什么地方
bs = byte size 可以是K,M,G,T
RAID 阵列卡
-
raid0
-
读、写速度有所提升
-
可用空间N(磁盘的个数)*每一块的大小
-
没有容错能力
-
最少磁盘数2
-
-
raid1
-
读有所提升,写性能下降
-
可用空间,所有磁盘中最小的一块大小
-
有容错能力
-
最少是2,2N
-
-
raid5
-
读写速度有提升
-
可用空间(N-1)*大小
-
有容错能力,最多可以坏一块硬盘
-
最少要3块
-
-
raid6
-
读写速度有所提升
-
可用空间(N-2)*大小
-
有容错能力,最多可以坏2块
-
最少要4块
-
-
raid10
-
先实现raid1,在实现raid0
-
读写性能有提升
-
可用空间N*大小/2
-
有容错能力,每组镜像可以坏一块
-
最少要4块
-
-
raid01
-
先实现raid0,在实现raid1
-
读写性能有提升
-
可用空间N*大小/2
-
有容错能力,只能坏同一组的
-
最少要4块
-
网络
网络基础知识
ipv4:4段 32位
网络位+主机位
网段:
主机:
A 网络位为8位
主机位为24位
第一位不可以变
0 0000001
0 1111111
1-126
127 有特殊用途,回环地址
可用网段数:2^7 -1
每一个网段有多少可用主机:2^24-2
有两个是不可以用:
主机位全为0,表示一个网段
主机位全为1,表示网段里面的广播地址
私有地址:自己可以用的
子网掩码:255.0.0.0
10 段
共有地址: 都可以访问的地址
1.1.1.1/8
00000001.0.0.0
11111111.0.0.0
1.0.0.0
B
16位网络位
16位为主机位
10 000000 00000000
10 111111 11111111
128
191
可用网段:2^14
每个网段有多少可用主机:2^16-2
私有地址:
172.16-172.31
子网掩码:255.255.0.0
C
前24位为网络位
后8位为主机位
110 00000 000000000 00000000
110 11111 11111111 11111111
192
223
可用网段:2^21
每个网段有多少可用机器:2^8-2
私有地址:
192.168.0 -192.168.255
子网掩码 255.255.255.0
D
作为多播地址
1110 0000
1110 1111
224
239
E
作为科研使用
CIDR(无类域间路由)
网络位向主机位借位
16 +5
21位网络位 11个 2^11 2046
255.255.11111000.0
255.255.248.0
网络位向主机位借位:
24+6 30
2^2 -2
子网掩码
网络位全为1,主机位全为0
ip地址和子网掩码来确定属于那个网段
按位与 :只要有0就是0,全部为1,才是1
1&0 0
2&3 2
按位或:只要有1就是1,全部为0,才是0
1|0 1
2|3 3
异或:相同为0,不同为1
1^0 1
2^3 1
3^5 6
取反:-(n+1)
~2 -3
~-4 3
左移:n*2的左移次方
2<<2 8
10<<3 80
右移:n/2的右移次方(向下取整,不是四舍五入)
12>>2 3 13>>2 3 50>>2 12 2>>2 0
10.20.43.65/10
网段
10.20.43.65 00001010.00010100. 11111111.11000000 10.0.0.0
网络配置
-
手动
-
ip
-
配置文件
-
-
自动分配
-
dhcp
-
ip
-
增加ip地址
ip a add 192.168.21.23/24 dev ens33
-
删除 ip
ip a del 192.168.21.23/24 dev ens33
-
增加ip地址并增加别名
ip a add 192.168.21.23/24 dev ens33 label ens33:0
-
删除
ip a del 192.168.21.23/24 dev ens33 label ens33:0
网卡配置文件
-
配置文件 /etc/sysconfig/network-scripts/ifcfg-name
TYPE="Ethernet" # 网卡的接口类型 PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" # 获取ip地址的方式,可以是dhcp,static,none DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" # 网卡名称 UUID="c252096f-57e0-41bd-a1d9-5158a86f9ba1" # 设备唯一标识码 DEVICE="ens33" ONBOOT="yes" #开机是否启动 HWADDR="" #mac地址 IPADDR=ip地址 NTEMASK=子网掩码 GATEWAY=网关
DNS配置文件
-
/etc/reslov.conf
nameserver 192.168.21.2
主机名
-
获取主机名 hostname
-
设置主机名 hostname name
-
配置文件
-
/etc/hostname centos7
-
/etc/sysconfig/network centos6
-
-
永久生效
-
hostnamectl set-hostname s22
-
修改配置文件
-
ss、netstat
ss命令用来打印linux系统中网络的状态信息,可以让管理员更好的了解网络情况
-a 所有 -l 监听中的 -t tcp -u udp -x unix socket文件 -p 相关的程序 -n 显示服务的端口号 常用组合 -anlp -tnlp -unlp * ipv4 0.0.0.0 表示当前主机上的所有ip地址 :: ipv6 所有地址
解析
-
本地解析 /etc/hosts
-
dns解析
-
根节点 总共13组
wget
用来下载网络资源
-q 静默模式 -c 断点续传 -O filename 另存为的名称 -P 保存到指定的目录 -r 递归下载 -p 下载所有的html文件
systemctl
管理服务 service
start name ... 启动服务
stop name ... 关闭服务
reload name 重读配置文件 平滑重启
restart name 重启服务
status name 查看状态
enable name 开机自启动
disabled name 关闭开机自启动
systemctl list-unit-files |grep sshd 查看服务是否开机自启动
centos6
service 动作 服务
chkconfig 用来管理服务的开机启动
计划任务(定时任务)
/etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 22 * * * * * root touch b.txt 每天的每小时的第22分钟做什么事 25 15 * * * root touch /tmp/c.txt 每天下午的三点25分 27 15,16,17 * * * root touch /tmp/d.txt 每天的15点,16点,17点的第27分钟 28 15-19 * * * root touch /tmp/e.txt 表示 每天的15点到19点的28分钟 30 10-20/5 * * * root touch /tmp/f.txt 每天的10点到20点每个5小时 */7 * * * * root touch /tmp/f.txt 从0开始重新结算 37 * 10,20,30 * 4 echo $(date) >> /tmp/g.txt 表示每个月的10,20,30或者每周的周四 建议: 分钟不要写成* 分钟不要写成* 分钟不要写成*
crontab 命令
-e 编辑 -u 指定用户,如果不写,默认为当前用户 -l 列出当前用户的计划任务 -r 删除用户的计划任务
-
默认写入的文件在/var/spool/cron/username
计划任务作用
-
定时删除
-
定时备份
-
同步时间 ntpdate
------------7------------
1.crontab的日志
/var/log/cron
2.命令最好写绝对路径
3.ping
-c 指定次数
ICMP 协议 ---> 自行百度
进程
查看进程 ps
ps [options]
支持的命令格式
-
unix格式:-h -e
-
BSD格式:a,x,u
-
GNU长格式:--help
选项
[root@s22 ~]#ps
PID TTY TIME CMD
28019 pts/4 00:00:00 ps
83674 pts/4 00:00:00 bash
pid 终端 当前命令占用cpu的时间 命令
a 所有的终端
x 包括不连接终端的终端
u 显示进程详细信息
f 显示进程树
k 指定排序方式 ,默认是递增,如果想递减,则需要在排序的字段上加上-
o 指定显示的属性,不能跟u同时使用
L 获取支持的选项,
-L 显示线程
-e 相当于 ax
-f 显示详细信息,相当于u
-F 显示更详细信息
-H 显示树状结构
-U username 获取指定的用户信息
常用选项: aux -ef -eFH
ps输出属性
VSZ 虚拟内存(程序认为可以获取到的)
RSS 实际内存
psr cpu编号
STAT 状态
%cpu cpu的占用率
%mem 内存的占用率
根据名称来查询进程
pidof name
[root@s22 ~]#pidof python
1169 825
系统工具
uptime
[root@s22 ~]#uptime
09:17:40 up 1 day, 22:19, 5 users, load average: 2.14, 1.59, 0.84
当前时间 当前服务器运行时长 当前的在线用户数 cpu的负载 1分钟 5分钟 15分钟
cpu平均负载:在特定时间之内cpu运行的平均进程数,不超过cpu核心数的2倍认为为良好
top
首部信息
-
uptime信息 l 显示与隐藏
-
tasks :进程总数,运行,睡眠数,停止数,僵尸进程 t
-
cpu信息: %Cpu(s): 0.3 us, 4.6 sy, 0.0 ni, 95.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
用户空间 系统空间 nice值 空闲 等待 硬中断 软中断 虚拟机偷走时间
-
内存信息 m
-
cpu分别显示 1(数字)
排序:
模式是cpu的占用率 P
M:内存占用率
T: cpu的占用时间
退出:q
杀死进程:k,默认是第一个
W 保存文件
选项:
-d 刷新时间
-b 显示所有的信息
-n # 指定刷新#次后退出
htop
-
epel源
性能分析
free
-b 字节
-k kb
-m mb
-g gb
-h 人类易读方式
-c # 刷新次数
vmstat
vmstat [options] [delay [count]]
[root@s22 ~]#vmstat 1 3 每秒刷新一次,刷新3次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 37028 162708 0 808588 0 0 8 6 34 34 0 2 97 0 0
0 0 37028 162560 0 808588 0 0 0 0 4535 6893 1 5 95 0 0
0 0 37028 162544 0 808588 0 0 0 0 4463 6772 0 5 95 0 0
procs:
r:正在运行的进程个数
b:阻塞队列的长度
memory:
swap: 虚拟内容大小
free: 空闲物理内存的大小
buff:用于buff的大小
cache:用户cache的大小
swap:
si:从磁盘交换到内存的数据速率(kb/s)
so: 从内存交换到磁盘的数据速率(kb/s)
io:
bi: 从磁盘读取到系统的速率(kb/s)
bo: 从系统写入到磁盘的速率(kb/s)
system:
in:中断频率
cs:进程之前切换的频率
cpu:
us
sy
id
wa
st
iostat
查看磁盘读写速度
iostat 1 10
dstat 查看所有
-c cpu
-d 硬盘
-m 内存
-n 网络
-p 进程
-r io请求
-s swap
--top-cpu 显示占用cpu最多的进程
--top-io 显示占用io最多的进程
--top-mem 显示占用内存最多的进程
--tcp 显示tcp的信息
--udp 显示udp的信息
iftop 显示网卡的流量
进程的管理工具
kill
向进程发送信号,实现对进程的管理,每个信号,对应不同的值,对应不同的含义,不区分大小写
查询可用信号:kill -l
常用信号:
1) sighub 不需要关闭程序,重新加载配置文件
2) sigint 终止进程,相当于ctrl+c
9) sigkill 强制杀死进程
15) sigterm 终止正在运行的进程
18)sigcont 继续运行
19)sigstop 后台休眠
按照pid: kill-n pid
按照名称:killall -n name
按照名称:pkill -n name
作业管理
-
前台作业:一直占用终端的作业
-
后台作业:不占用当前的终端
让作业运行于后台:
-
ctrl+z 对于启动中
-
command & 也会输出到终端
脱离终端:
-
nohup command &>/dev/null &
-
screen
-list 查看所有的screen窗口 -r 进入
安全
防火墙
-
绿盟
-
深信服
-
启明星辰
-
飞塔
-
思科
-
华为
-
华三
4表5链 iptables -L 查看 防火墙策略 iptables -F 清空 防火墙 systemctl disable firewalld 开机并启动 systemctl stop firewalled
selinux
美国国家安全局
-
配置文件 /etc/selinux/config
-
SELINUX=disabled
-
setenforce 0 临时生效
-
getenforce 查看selinux的状态
rhcea
rhce
rhca
ccnp
ccie
ccia
ocp
编译后的软件如果想删除,直接删除编译生成到目录就可以
虚拟环境
安装
pip3 install virtualenv -i https://pypi.douban.com/simple
创建虚拟环境
virtualenv --no-site-packages django11 --no-site-packages 创建一个全新的python环境 --python 指定以哪个python来创建虚拟环境
进入虚拟环境
source envdir/bin/activate
退出虚拟环境
deactivate
确保环境一致
在windows上执行如下命令: 将windows上安装的包做快照 pip freeze > requirement.txt 将requirement.txt发送到linux上 切换虚拟机 pip install -r requirement.txt -i https://pypi.douban.com/simple
virtualenvwrapper
为了解决虚拟环境管理的问题,因为虚拟环境可以在任何目录下创建
1. 安装 pip3 install virtualenvwrapper -i https://pypi.douban.com/simple 2.修改文件 vim ~/.bashrc export WORKON_HOME=/envdir export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 source /opt/python36/bin/virtualenvwrapper.sh 3. 加载~/.bashrc source ~/.bashrc 4.创建环境 mkvirtualenv django11 创建并切换 5.进入虚拟环境 workon name 6.切换到当前虚拟环境的文件夹 cdvirtualenv 7.切换到当前虚拟环境的第三方包的文件夹 cdsitepackages 8.退出 deactivate 9.列出当前管理的虚拟环境 lsvirtualenv 10.列出当前虚拟环境的第三方包 lssitepackages 11.删除虚拟环境 rmvirtualenv 必须要退出才能删除