Linux学习笔记
Linux介绍
版本号:主版本号+次版本号+末版本号
- 次版本号为奇数:开发版
- 次版本号为偶数:稳定版
发行版:RedHat、Fedora、CentOS、Ubuntu、Debian
文件管理
文件结构
- /:根目录
- /root:root用户的家目录
- /home/user:user用户的家目录
- /etc:配置文件目录
- /bin:命令目录
- /sbin:管理命令目录
- /usr/bin和/usr/sbin:系统预装的命令
帮助命令
man
- man 命令名称
- man 区段号 命令/文件
- man -a 命令
help
- 查看命令类似:type 命令
- 内部命令:help 命令名称
- 外部命令:命令名称 –help
info
- info 命令
文件管理
核心思想
- 一切皆文件
查看当前路径
pwd
查看当前文件路径
ls
- -a:列举详细文件,包括隐藏文件
- -l:以长列表的形式显示目录
- -h:显示文件大小
- -r:逆序展示文件
- -t:按时间顺序展示文件
- -R:递归显示文件
查看文件
- cat filename
- head -n filename
- tail -f -n filename
- more filename
- less filename
统计文件
1 | wc filename |
目录操作
切换文件目录:cd
- 相对路径与绝对路径的概念
- 上下级路径:./和../
- -:切换至上次路径
删除目录:rmdir
创建目录:mkdir
- -p:创建多级目录
拷贝文件或目录:cp
- -r:拷贝目录
- -v:显示进度
- -P:保留原有属性
- -a:保留权限
文件操作
创建文件:touch
删除文件:rm
- -r:递归删除
- -f:强制删除
移动文件或重命名:mv
- mv old_file new_file
通配符
- *:任意字符
- ?:一个字符
- [xyz]:x或y或z
- [a-z]:a到z
- [!xyz]或[^xyz]或[xyz$]
打包与压缩
压缩
1 | tar zcf/jcf filename 被打包的目录 |
解压
1 | tar zxf/jxf 文件名 -C path |
Vim
四种模式:正常模式、插入模式、命令模式、可视模式
正常模式
- vim + filename:从终端进入vim的正常模式
- i:从正常模式切换至插入模式
- I:从正常模式切换至插入模式并将光标移动至本行开头
- a:从正常模式切换至插入模式并将光标移动至下一格
- A:从正常模式切换至插入模式并将光标移动至本行结束
- o:从正常模式切换至插入模式并将光标移动至下一行
- O:从正常模式切换至插入模式并将光标移动至上一行
- v:从正常模式切换至可视模式
- ::从正常模式切换至命令模式
- h:光标向左移动
- j:光标向下移动
- k:光标向上移动
- l:光标向右移动
- nyy:复制n行
- y$:复制光标至本行结尾的内容
- p:粘贴
- ndd:剪切n行
- d$:剪切光标至本行结尾的内容
- nu:撤销最近的n次操作
- ctrl+r:反撤销
- x:剪切单个字符
- r:替换当前字符
- n shift+g:移动至第n行
- G:移动至最后一行
- ^:移动至本行开头
- $:移动至本行结尾
插入模式
- 输入或删除即可
命令模式
- Esc+::进入命令模式
- w (路径+文件名):保存
- q:退出
- /s:查找字符串s
- n:下一个
- shift+n:上一个
- %s/old/new/g:替换全文的old为new,单行无%,第n个将g改为n,g为全局替换
- start,stops/old/new/:替换start到第stop的old为new
- set nu:显示行号
- set nonu:不显示行号
- 配置文件:/etc/vimrc
可视模式
- v:字符可视模式
- V:行可视模式
- ctrl+v:块可视模式
- b:删除
权限管理
用户权限管理
添加用户
- useradd add username
删除用户
- userdel -r username
更改密码
- passwd username
修改用户权限
- usermod -d 文件目录 username
- usermod -g 用户组名 username
修改用户属性
- chage
配置文件
- /etc/passwd:存储用户名
- /etc/shadow:存储密码
- /etc/group:存储用户组
用户切换
- su - username
文件权限管理
查看文件权限
ls -al filename
权限组成:文件类型+所属用户权限+同一用户组权限+其他用户权限+特殊权限+用户+用户组
文件类型
- -:普通文件
- d:目录文件
- b:特殊块文件
- c:特殊字符文件
- l:符号链接
- f:命名管道
- s:套接字文件
权限表示
字符权限表示
- r:读
- w:写
- x:执行
数字权限表示
- 4:读
- 2:写
- 1:执行
目录权限管理
- x:有权进入目录
- rx:有权显示目录内的文件名
- wx:有权修改目录内的文件名
修改权限
文件目录权限修改
- chmod 字符/数字 filename/dirname
所属用户及组权限修改
- chown 用户组:用户组 filename/dirname
用户组权限修改
- chgrp 用户组 filename/dirname
初始化文件权限
- 初始权限=666-umask
特殊权限
- SUID:用于二进制可执行文件,执行命令时取得文件属主权限
- SGID:用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属组
- SBIT:用于目录,该目录下新建的文件和目录,仅root和自己可以删除
网络管理
net-tools
网络状态查看
ifconfig:查看基本的网络信息
- 网卡名称(网络接口,可修改)
- eth0:第一块网卡
- eno1:板载网卡
- ens33:PCI-E网卡
- enp0s3:无法获取物理信息的PCI-E网卡
- CentOS若以上都不匹配,使用eth0
- inet:IP地址
- netmask:子网掩码
- ether:MAC地址
mii-tool 网卡名称:查看网卡物理连接情况
route:查看路由表,若不进行域名解析,加参数-n
IP地址配置
修改IP地址
1 | ifconfig 网卡名称 IP地址 netmask 子网掩码 |
启动网卡
1 | ifup 网卡名称 |
断开网卡
1 | ifdown 网卡名称 |
路由表配置(route)
添加默认路由
1 | route add default gw 网关IP |
添加指定路由
1 | route add -host 指定IP gw 网关IP |
添加指定网段
1 | route add -net 指定网段 netmask 子网掩码 gw 网关ip |
删除路由
1 | route del default gw 网关ip |
iproute2
查看网络情况
1 | ip addr ls |
启停网卡
1 | ip link set dev 网卡名称 up/down |
设置路由
1 | ip addr add IP/24 dev 网卡名称 |
设置网关
1 | ip route add IP/24 via 网关ip |
网络故障排除
工具:
ping、traceroute、mtr、nslookup、telnet、tcpdump、netstat、ss
思路
- ping 目标IP/域名
- traceroute -w 等待时间 域名/IP
- mtr 域名/IP
- nslookup 域名
- telnet IP/域名 端口
- tcpdump -i any -n(ip方式,非域名) port 端口号 and host IP地址 -w 保存位置及文件名
- netstat -n(ip显示)t(tcp)p(进程号)l(listen)
- ss -ntpl
网络管理程序
SysV
service
1 | service network status|start|stop|restart |
chkconfig
1 | chkconfig --list network |
Systemd
systemctl
1 | systemctl list-unit-files NetworkManager.service |
网络配置文件
hosts文件
- /etc/hosts
网卡配置文件
- ifcfg-网卡名
- /etc/sysconfig/network-scripts/
主机名
- hostname
- 修改:hostnamectl sethostname newname
软件管理
简单介绍
- CentOS、Redhat使用yum,软件安装包格式为rpm
- Debian、Ubuntu使用apt,软件安装包格式为deb
- rpm包格式:软件名称+软件版本+系统版本+平台.rpm
rpm管理
查询
1 | rpm -qa |
安装
1 | rpm -i 安装包名称 |
卸载
1 | rpm -e 模块名称 |
yum管理
源
- 镜像源文件:/etc/yum.repos.d/CentOS-Base.repo
查看
1 | yum list|grouplist |
安装
1 | yum install soft_name |
卸载
1 | yum remove soft_name |
升级
1 | yum update |
更新缓存
1 | yum makecache |
二进制安装&源代码编译
此处暂不记录,需要可自行查询
升级内核
rpm格式升级内核
查看内核版本
1 | uname -r |
升级内核版本
1 | yum install 内核版本 |
编译安装
过程较为复杂,此处暂不展示
进程管理
基本介绍
- 进程可理解为正在运行中的程序
- 进程的终止可分为正常终止(return、exit)和异常终止(abort、信号)
- Linux下的第一个进程为init
进程查看
ps
1 | ps 参数选项 |
- -e:查看所有进程
- -f:显示详细信息
- -L:显示线程
pstree
以树状的形式显示进程状态
top
1 | top -p 进程号 |
进程控制
进程优先级
进程优先级 -20<=nice<=19,值越小,优先级越高
以指定优先级运行文件
1 | nice -n 优先级 文件名 |
修改指定进程的优先级
1 | reduce -n 优先级 进程号 |
进程的作业控制
使任务在后台进行
1 | command & |
查看在后台运行的任务
1 | jobs |
将任务调至前台
1 | fg 任务号 |
将任务调至后台
1 | bg 任务号 |
进程通信
终止进程
kill中止
1
kill -9 pid
ctrl + c 发出sigint来中断进程
查看信号
1 | kill -l |
守护进程
- 守护进程是随系统开机自动运行的进程
- nohup 使进程忽略hangup(挂起信号)
- /proc/pid存储当前的进程文件(ls -l cwd/fd)
screen
进入screen
1 | screen |
退出
1 | ctrl+a+d |
查看screen会话
1 | screen -ls |
恢复会话
1 | screen -r pid |
管理工具
service
1 | service service_file status|start|stop|restart|reload|enable|disable |
systemctl
1 | systemctl status|start|stop|restart|reload|enable|disable service_file |
内存与磁盘管理
文件系统介绍
Linux支持的文件系统:ext4、xfs、NTFS(需安装额外软件)
ext4特点:超级块、超级块副本、i节点、数据块
内存使用率查看
free
1 | free (-m)(-g) |
top
1 | top |
磁盘使用率查看
fdisk
1 | fdisk -l |
parted
1 | parted -l |
df
1 | df -h |
du
1 | du -h |
链接
硬链接
1 | ln filea fileb |
软链接(符号链接)
1 | ln -s filea fileb |
文件访问权限与收回
文件访问权限
1 | getfacl filename |
设置文件访问权限
1 | setfacl -m/-x u:username:r/g:groupname:rx filename |
硬盘分区与挂载
分区
分区分为主分区(<4)和扩展分区(建立逻辑分区)
1 | fdisk -l |
格式化
1 | mkfs.格式名 分区名 |
挂载
1 | mount -t 分区名 挂载目录 |
配置文件
- /etc/fastab -> /dev/sdc/ /mnt/sdc/ ext4 defaults 0 0
用户磁盘限额
xfs 格式磁盘限额(限制用户可创建的文件个数)
交换分区swap
增加交换分区大小
1 | mkswap 分区名 |
使用文件制作交换分区
1 | dd if=/dev/zero bs=4 count=1024 of=/swapfile |
分区永久化
1 | /swapfile swap swap defaults 0 0 |
RAID(磁盘阵列技术)
暂无记录,有需要可自行查找资料
shell编程
参考《shell编程语言》
文本处理
- vim:全文本编辑器,交互式,文本操作模式
- sed/awk:行文本编辑器,非交互式,行操作模式
sed
sed最常用于替换
sed的模式空间,替换命令s
sed将不规范的的文本处理为比较规范的文本
工作方式
- 以行为单位将文件读入内存
- 使用sed的每个脚本对改行操作
- 处理完成后输出该行
替换命令s
测试输出
1 | sed 's/old/new/' filename |
多次替换
1 | sed -e 's/old/new/' 's/old/new/' filename |
替换写入
1 | sed -i 's/old/new/' 's/old/new/' filename |
正则替换
1 | sed -i 's/扩展正则表达式/new/' filename |
命令加强
全局替换
1 | s/old/new/g(标志位) |
标志位
- n:第n次出现才进行替换
- g:全局替换
- p:打印模式空间的内容
- sed -n “script” 文件名:阻止默认输出
- w file:将模式空间的内容写入文件
寻址
- 正则:s/old/new/g
- 行号:s/old/new/g
分组
1 | /regular/{s/old/new/;s/old/new/} |
sed脚本文件
1 | sed -f sedscript filename |
sed其它方案
删除:d,删除模式空间内容,中断控制流
追加:a(下一行)、i(上一行)
更改:c
打印行号:=/p(配合参数-n)
下一行:n
读文件:r
写文件:w
退出命令:q
高级功能
多行模式处理
- N:将下一行加入到模式空间
- D:删除模式空间中第一个字符到第一个换行符
- P:打印模式空间中第一个字符到第一个换行符
保持空间
- h、H:模式空间—>保持空间
- g、G:保持空间—>模式空间
- x:保持空间<—>模式空间
awk
awk用于比较规范的文本,用于统计数量并输出指定字段
流程控制
- BEGIN{}:输入数据前例程
- {}:主输入循环
- END{}:所有文件读取完成例程
字段引用与分离
字段与记录
- 行为记录
- 空格、制表符分隔开的单词称为字段
- 可以直接指定分隔的字段
引用
1 | awk '{print $1,$2,$3}' filename |
1 | awk -F '分隔符' '{print $1,$2,$3}' filename |
表达式
赋值操作符
- =、++、–、+=、-=、*=、/=、%=、^=
算数操作符
- +、-、*、/、%、^
系统变量
- FS和OFS:FS为字段分隔符,OFS为输出的字段分隔符
- RS:记录分隔符
- NR和FNR:行数
- NF:字段数量,最后一个字段内容可以由$NF取出
关系操作符
- <、>、<=、>=、==、!=、
、!
布尔操作符
- &&、||、!
判断与循环
判断
1 | if(判断条件) |
循环
1 | while(条件) |
1 | do |
1 | for(判断条件) |
- 支持break和continue
awk数组
定义
- 数组[下标]=值
遍历
- for 变量 in 数组 {代码块}
删除
- delete 数组[下标]
命令行多数数组
- ARGC:参数个数
- ARGV:参数内容
awk函数
算数函数
- sin()、cos()、int()、rand()、srand()
字符串函数
- gsub()、index()、length()、match()、split()、sub()、substr()
自定义函数
- function 函数名(参数) {awk语句 return awk变量}
服务管理
防火墙分类
- 硬件防火墙和软件防火墙
- 包过滤防火墙和应用层防火墙
iptables
表
- filter、nat、mangle、raw
链
- INPUT、OUTPUT、FORWARD
- PREROUTING、POSTROUTING
filter表
1 | iptables -t filter 命令 规则链 规则(动作) |
命令
- -L(vn):列举信息
- -A:在已有的后面添加
- -I:在第一个添加
- -D:删除规则
- -F:清除自己添加的规则
- -P:更改默认规则
- -N:增加自定义规则链
- -X:删除自定义规则链
- -E:重命名自定义规则链
规则
- -s IP/网段
- -j ACCEPT/DROP
- -d 目的地
- -i/o 进出的网卡接口
- -P 协议 –dport 端口
nat表
1 | iptables -t nat 命令 规则链 规则 |
- PREROUTING:目的地址转换
- POSTROUTING:源地址转换
例
1 | # 目的地址转换 |
配置文件
- /etc/sysconfig/iptables
firewallD
特点:
- 支持区域”zone”的概念
- firewall-cmd
firewall-cmd
- –state
- –list-all
- –zone=public
- –get-zones
- –get-default/active-zone
- –list-ports/interfaces/services
启停
1 | systemctl status|start|stop|enable|disable firewalld.service |
增加服务
firewall-cmd
- add-source=https –permanent
- add-port=81/tcp
- –remove-source=10.0.0.1
- –reload
常见服务
- ssh
- telnet
- ftp
- samba
- nfs
- nginx
- lnmp
- dns
- nas
本文链接: https://yd0ng.github.io/2020/03/31/Linux%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!