linux命令

------------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 关机

    • init 6

------------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------------

cat 显示文本

-E 显示结尾的$符
-n 对显示的每一行进行编号
-b 对非空行进行编号
-s 对连续的空行进行压缩

tac 倒序显示

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------------

find

是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 表示通用

包的来源

  • 光盘

  • 第三方网站

  • 官方网站

  • 自己做

  • https://pkgs.org

  • 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

修改刷新频率:s,默认是3秒

杀死进程: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 必须要退出才能删除

 

 

posted @   diracy  阅读(235)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示