博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux Foundation(笔记)
阅读量:6408 次
发布时间:2019-06-23

本文共 16069 字,大约阅读时间需要 53 分钟。

/************************************************************* *                    Linux Foundation *   1. 总结一下Linux的基础内容; *   2. 主要目标是防止以后忘记了,这里有个地方可以快速回忆; * *                                2015-3-29 晴 深圳 曾剑锋 ************************************************************/          \\\\\\\\\\\\\\\\\*目录*////          |  一. 退出终端的三种方法:                     |  二. 关机:                                   |  三. 重启:                                   |  四. 快速打开文件夹:                         |  五. 快速输入:                               |  六. 锁屏:                                   |  七. 配置网络,进行联网:                      |  八. shell命令处理顺序:                      |  九. 把标准错误合并到标准输出:               |  十. 命令历史:                               |  十一. 环境变量:                             |  十二. bash配置文件:                          |  十三. 什么叫正则表达式?                      |  十四. 计算机网络:                           |  十五. arp查看网络:                          |  十六. nc监听端口,netstat查询端口:            |  十七. 修改系统的DNS服务器:                   |  十八. 五个类别的IP地址:                      |  十九. TCP连接建立,断开:                     |  二十. 路由表:                                |  二十一. 数据包转发:                            |  二十二. iptables语法                         \\\\\\\\\\\\\\\\\\\\///一. 退出终端的三种方法:    1. 执行命令 logout    2. 执行命令 exit    3. 按组合键 Ctrl+D二. 关机:    1. init 0    2. shutdown -h now (root权限)     三. 重启:    1. reboot    2. init 1    2. shutdown -r now   (root权限)    3. shutdown -r 10    (root权限,过10分钟重启)    4. shutdown -r 20:35 (root权限,在20:35重启)四. 快速打开文件夹:    nautilus .五. 快速输入:    按组合键Ctrl+L可以弹出窗口,用以输入目标目录的位置六. 锁屏:    1. 组合键Ctrl+Alt+L可用于快速锁屏(推荐)    2. 运行系统菜单项 System -> Lock Screen七. 配置网络,进行联网:    1. 打开gnome-terminal    2. 切换成root身份    3. 关闭NetworkManager 服务,NetworkManager 服务会干扰网络配置,必须把它关闭        1. service NetworkManager stop        2. chkconfig --level 2345 NetworkManager off    4. 确认网线已经连接好,以eth0 为例        1. ifconfig eth0 up        2. mii-tool eth0            eth0: negotiated 100baseTx-FD flow-control, link ok     <-- 网线已经连好        3. mii-tool eth0            eth0: no link                                           <-- 网线没有连好    6. 上面找到的网卡可能不止一个,挑其中一个进行配置即可,用vim命令编辑网卡的配置文件:        vim /etc/sysconfig/network-scripts/ifcfg-eth0        按照下面的范例进行修改,然后保存,退出.两条虚线和每一行右边的描述文字不属于配置文件的内容.            -------------------------------------------            DEVICE=eth0                 <-- 网卡名字            BOOTPROTO=static            <-- 使用固定IP            NM_CONTROLLED=no            ONBOOT=yes                  <-- 自动启动            TYPE=Ethernet            IPADDR=10.1.1.11            <-- IP 地址            NETMASK=255.255.255.0       <-- 子网掩码            GATEWAY=10.1.1.1            <-- 默认网关            DNS1=10.1.1.1               <-- DNS 服务器            -------------------------------------------八. shell读取命令行输入后,按以下顺序进行处理:    1. 把变量赋值和重定向的字符保存起来,留到后面使用    2. 执行各种展开操作 (包括命令别名展开,参数/变量展开,等等)    3. 设置重定向    4. 给变量赋值    5. 如果命令名中不包含斜杠,shell会按照这个顺序查找命令,并执行首先找到的命令:        函数 --> 内部命令 --> PATH中的可执行文件    6. 如果命令名中包含了斜杠,shell会把命令名当文件路径,然后去执行该文件九. 把标准错误合并到标准输出:    1. ls /home /root 1> /tmp/good 2>&1     <-- good        1. 默认值           1  --- 屏幕        2. 1> /tmp/good     1  --- /tmp/good        3. 2>&1             2  --- /tmp/good    2. ls /home /root 2>&1 1> /tmp/good     <-- bad        1. 默认值           1  --- 屏幕        2. 2>&1             2  --- 屏幕        3. 1> /tmp/good     1  --- /tmp/good十. 命令历史:    1. set -o history      <-- 启用命令历史功能     2. set +o history      <-- 关闭命令历史功能     3. history             <-- 显示命令的历史    十一. 环境变量:    1. 环境变量可以被子进程访问;    2. 查看当前的环境变量: env     3. set命令可以列出更多信息;    4. 定义(设置)一个环境变量,用的是命令export,有两种做法:        1. 先定义,后export:            TMOUT=300            HISTSIZE=100000            export TMOUT HISTSIZE        2. 一步到位export:            export TMOUT=300 HISTSIZE=100000    5. 几个环境变量介绍        1. PATH                                     <-- 影响命令的搜索        2. TMOUT                                    <-- 超时时间        3. PS1                                      <-- 命令提示符        4. HISTSIZE, HISTFILESIZE, HISTTIMEFORMAT   <-- 命令历史十二. bash配置文件:    1. Bash shell 常用的配置文件有以下几个:        1. /etc/profile       <-- 全局配置文件,作用于系统上所有的用户        2. /etc/bashrc        <-- 全局配置文件,作用于系统上所有的用户        3. ~/.bash_profile    <-- 用户配置文件        4. ~/.bashrc          <-- 用户配置文件        5. ~/.bash_logout     <-- 用户配置文件    2. 根据shell 的启动方式不同,可以大致地把shell分为以下几种:        1. login shell              <-- 在文本界面登录,su -, bash --login        2. interactive shell        <-- gnome-terminal 中的shell        3. non-interactive shell    <-- 用来运行脚本的shell    3. 在红帽企业版6.3上面,/etc/profile, ~/.bash_profile, ~/.bashrc, /etc/bashrc 这四者的调用关系图如下:               login shell                    interactive shell                  /  \                                |                 /    \                               |              1 /      \ 2                            |               /        \                             |              /          \                            v     /etc/profile       ~/.bash_profile  ----->  ~/.bashrc  -----> /etc/bashrc        1. login shell开始运行时会按顺序读取文件/etc/profile和~/.bash_profile        2. interactive shell 开始运行时会读取文件 ~/.bashrc        3. ~/.bash_profile 会调用~/.bashrc        4. ~/.bashrc 会调用 /etc/bashrc    4. 另外,login shell 退出时会读取文件 ~/.bash_logout    5. 根据以上特点,可以通过修改上面几个配置文件,来修改shell的行为十三. 什么叫正则表达式?    1. 正规表示法: Regular expression    2. 单个字符表示法:        字符本身        <-- 除了下面的特殊字符之外,字符可以表示其本身        .               <-- Any character        \d              <-- Digit in 0123456789        \D              <-- Non-digit         \w              <-- Word: letters, digits, underscore (_)        \W              <-- Non-word         \t              <-- Tab        \r              <-- Carriage return        \n              <-- New line        \s              <-- Whitespace: space, \t, \r, \n        \S              <-- Non-whitespace        [abc]           <-- a, or b, or c        [a-c]           <-- a, or b, or c        [0-2]           <-- 0, or 1, or 2        [1-3a-cX-Z]     <-- 1, 2, 3, a, b, c, X, Y, Z        [^abc]          <-- Any character except a and b and c        [:upper:]       <-- Upper case letters, [A-Z]        [:lower:]       <-- Lower case letters, [a-z]        [:alpha:]       <-- Alphabetic characters, [a-zA-Z]        [:alnum:]       <-- Alphanumeric characters, [a-zA-Z0-9]        [:digit:]       <-- Digits, [0-9]        [:xdigit:]      <-- Hexadecimal digits, [a-fA-F0-9]        [:punct:]       <-- Punctuation and symbols, [][!"#$%&'()*+,./:;<=>?@\^_`{|}~-]        [:blank:]       <-- Space and tab, [ \t]        [:space:]       <-- All whitespace characters including line breaks, [ \t\r\n\v\f]        [:cntrl:]       <-- Control characters, [\x00-\x1F\x7F]        [:graph:]       <-- Visible characters (i.e. anything except spaces, control characters, etc.), [\x21-\x7E]        [:print:]       <-- Visible characters and spaces (i.e. anything except control characters, etc.), [\x20-\x7E]        [:word:]        <-- Word characters (letters, numbers and underscores), [a-zA-Z0-9_]        [:ascii:]       <-- ASCII characters, [\x00-\x7F]    3. 特殊字符表示法        ^$.*+?|\{}[]() 都有特殊意义的,如果需要表示这些符号,则可以用反斜杠对它们进行转义,比如:        \. 匹配一个点        \\ 匹配一个反斜杠        \^        \$    4. 数量表示法, 用来表示前面的一个字符,或者一组字符重复的次数        *           <-- 任意次,     c >= 0        +           <-- 至少1次,    c >= 1        ?           <-- 0次或者1次, c == 0 || c == 1        {m}         <-- m 次,       c == m        {m,}        <-- 至少m 次,   c >= m        {m,n}       <-- m 次至n 次, c >= m && c <= n           1. 默认情况下,数量表示符只作用于前面的【一个】字符,如果需要          作用于前面的多个字符,可以使用(...)把前面的字符括起来           1. ab+  匹配ab, abb, abbb, abbbb...           2. (ab)+ 匹配ab, abab, ababab, abababab...              2. 默认情况下,数量表示符是最大匹配,好的正则表达式引擎支持用          问号?来启用最小匹配           1. .*b   匹配 aaabababa      <-- 最大匹配                         ^^^^^^^^           2. .*?b  匹配 aaabababa      <-- 最小匹配                         ^^^^    5. 分组表示法        (abc)       <-- 一组连续的字符abc        (aa|bb)     <-- 一组连续的字符ab 或者 bb    6. 边界表示法        ^           <-- 字符串的开头        $           <-- 字符串的结尾        \b          <-- 单词边界        \B          <-- 非单词边界        \<          <-- 单词左边界        \>          <-- 单词右边界    7. 引用表示法,从左边开始数左小括号(openning brace),数字从1开始,       被第一对括号匹配的字符可以用\1 来引用,第二对可以用\2 来引用,以此类推.        1. echo abcabcabcaabb | grep -E '(a(bc)){2}\1' --color            abcabcabcaabb        2. echo abcabcabcaabb | grep -E '(a(bc)){2}a\2' --color            abcabcabcaabb        3. echo "hello world, hello world, hello beautiful world" | grep -E --color '((hello) (world)), \1, \2 .* \3'            hello world, hello world, hello beautiful world    8. 时间表示方法        date | grep --color -oE '([0-1][0-9]|2[0-3])(:[0-5][0-9]){2}'    9. 日期表示方法        echo 2014-07-07 12:30:30 | grep --color -E '[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])'    10. IP的表示方法        ifconfig | grep --color -E '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'    11. MAC 地址的表示方法        ifconfig | grep --color -E '([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}'十四. 计算机网络:    1. 当通过网络安装操作系统时,客户机上的临时系统需要从服务器下载文件,背后的流程是怎样的?       此时客户机和服务器同处一个局域网(在同一个网络中),通信模式是主机 <---> 主机    2. 交换机:       用来连接同一个网络(局域网,本地网络)的主机    3. 当用户从互联网上下载一个文件的时候,背后的流程又是怎样的?       此时客户机和服务器处于不同的网络,情况复杂了一些,通信模式是网络 <---> 网络    4. 路由器用来连接不同的网络    5. 网页浏览器,网卡驱动程序,硬件设备,协议(书面写的协议,和协议的实现,比如程序)    6. 协议的实现(implementation)        1. TCP/IP 协议族:            TCP, UDP, IP, ICMP, IGMP, ARP, HTTP, FTP, TFTP, DNS, DHCP        2. TCP/IP 的分层结构            1. 应用层(Application): http, ftp, tftp, dns, dhcp            2. 运输层(transport,传输层): TCP,UDP               在两台主机上的进程之间传输数据            3. 网络层(Internet): IP, IGMP, ICMP               在两台主机之间传输数据            4. 链接层(Link):               负责在局域网(本地网)内的主机之间传输数据            十五. arp查看网络:    1. IP: 10.1.1.1    2. MAC: 1C:6F:65:66:F2:55    3. arp -s 10.1.1.1 1C:6F:65:66:F2:55    4. arp -n 10.1.1.1    5. 快速获取当前局域网里所有主机的MAC地址,假设局域网IP的范围是11至41        for i in {
11..41} do ping -c1 -W1 10.1.1.${i} &>/dev/null & done十六. 用命令nc监听本地的30000端口,然后用netstat列出该记录: 1. nc -l 10.1.1.1 30000 2. netstat -tulpn | grep 30000十七. 修改系统的DNS服务器: 1. 打开 /etc/resolv.conf vim /etc/resolv.conf 2. 把里面所有的记录删除,然后添加以下一行 nameserver 8.8.8.8 3. 保存退出十八. 五个类别的IP地址: 1. A类地址首位为0 2. B类地址首两位为10 3. C类地址首三位为110 4. D类地址首四位为1110 5. E类地址首五位为11110十九. TCP连接建立,断开: 1. TCP 连接的建立: TCP 连接的建立需要经历一个被称为“三次握手”的过程: 2. TCP 连接的断开: TCP 连接的断开,一般需要经历四个阶段,某些情况下是三个阶段. 二十. 路由表操作: 1. IP层在内存中有一个路由表,当需要发送数据包时,它都要对该表搜索一次 1. route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 8.8.8.8 192.168.199.2 255.255.255.255 UGH 0 0 0 eth0 192.168.6.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8 192.168.71.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1 192.168.199.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 0.0.0.0 192.168.199.1 0.0.0.0 UG 0 0 0 eth0 标记的含义: U <-- route is up G <-- use gateway H <-- target is a host (没有此标记代表这是到某个网络的路由) 2. 管理路由表 1. route -n <-- 查看 2. route add default gw 10.1.1.1 <-- 添加一条默认路由 3. route del default gw 10.1.1.1 <-- 删除指定的默认路由 4. route add -net 10.1.2.0/24 gw 10.1.1.2 <-- 添加到达指定网络的路由 5. route del -net 10.1.2.0/24 gw 10.1.1.2 <-- 删除达到指定网络的路由 6. route add -host 10.1.3.1 gw 10.1.1.3 <-- 添加到达指定主机的路由 7. route del -host 10.1.3.1 gw 10.1.1.3 <-- 删除达到指定主机的路由 8. route add -net 10.1.2.0/24 dev eth0 <-- 添加一条直连路由二十一. 数据包转发 1. 当主机收到来自某个网络接口的数据时,它会按照以下方式进行处理: 1. 检查数据中的目的IP是否为本机的IP之一或者广播地址: 1. 是,则把数据送到相应的协议模块进行处理 2. 否,则进入下一步 2. 检查主机是否被设置为路由器: 1. 是,则对数据进行转发 2. 否,丢弃数据 1. 把Linux 系统配置成路由器的步骤 1. 编辑文件:/etc/sysctl.conf net.ipv4.ip_forward = 1 <-- 设置为1,代表启用包转发功能 2. 运行命令sysctl -p使上一个的配置生效 3. 确认防火墙没有阻挡包的转发 1. iptables -F FORWARD 2. iptables -P FORWARD ACCEPT 4. 把当前的iptables 的设置写入配置文件中:service iptables save, 配置将会保存到/etc/sysconfig/iptables 中二十二. iptables语法 1. 参数列表: -A append, 在链的尾部添加规则 -D delete, 删除规则 -L list, 列出规则 -S list, 列出规则,规则的形式和命令行一样 -n numeric, 以数值显示 -I insert, 在链的指定位置(默认为最前面)插入规则 -v verbose 显示统计数据,与-L一起用,看到的信息更多 --line-numbers 显示规则的序号 -F flush, 用于清空规则 -t table, 表名(比如nat) -P policy, 用于设置链的默认策略 -p protocol, 协议名 --dport destination port, 目标端口 --sport source port, 源端口 -d destination, 目标IP 地址 -s source, 源IP 地址或者网络 -i input interface, 网卡,数据包的来源网卡 -o output interface, 网卡,数据包的目标网卡 -j jump, 动作 2. 动作的分类: ACCEPT 允许 DROP 丢弃数据包,不回应源端 REJECT 丢弃数据包,回应源端 SNAT 源地址转换 DNAT 目标地址转换 MASQUERADE IP 伪装,实质上是SNAT,常用于外网IP 不固定的场合,比如PPP拔号 LOG 记录日志 3. iptables的表: 1. filter (默认的表) 2. nat 4. iptables 匹配规则的顺序是从上往下逐条匹配,找到匹配的条目后就不再继续往下 匹配了,如果没有找到匹配的条目,就按照默认策略处理. 5. 举例: 1. 只允许10.1.1.20 ping,拒绝其他所有IP (注意两条规则的顺序) iptables -A INPUT -p icmp -s 10.1.1.20/32 -j ACCEPT iptables -A INPUT -p icmp -j DROP 2. 把一条规则加到链的最前面 iptables [-t table] -I chain rule-specification iptables -I INPUT -p tcp --dport 22 -j REJECT 3. 把一条规则加到链的指定位置 iptables [-t table] -I chain rulenum rule-specification iptables -I INPUT 2 -p tcp --dport 22 -j REJECT 4. 删除指定的某条规则 iptables [-t table] -D chain rulenum iptables -I INPUT 10 5. 清空规则 iptables [-t table] -F [chain] iptables -F OUTPUT iptables -t nat -F POSTROUTING 6. 多端口的写法 iptables -A INPUT -p tcp --dport 1:1000 -j ACCEPT iptables -A INPUT -p tcp -m multiport --dport 22,80,110 -j ACCEPT 7. 允许对本机的TCP 22, 25, 80 端口的访问 iptables -A INPUT -p tcp -m multiport --dport 22,25,80 -j ACCEPT 8. 记录日志 iptables -A OUTPUT -p udp -d 8.8.8.8 --dport 53 -j LOG --log-prefix "[FWLOG] " 9. 列出某个链中的所有规则 iptables -L
iptables -S
iptables -L INPUT iptables -S INPUT iptables -t nat -L POSTROUTING 10. 显示规则的序号 iptables -L
--line-number 11. 清空某个表中的所有规则 iptables [-t table] -F 12. 设置链的默认规则(策略) iptables [-t table] -P chain target iptables -P INPUT DROPT iptables -P OUTPUT ACCEPT 13. 禁止访问外部加密网页(https) iptables -A OUTPUT -p tcp --dport 443 -j REJECT 14. 有选择地转发数据包 iptables -A FORWARD -s 10.1.2.0/24 -j ACCEPT iptables -A FORWARD -s 10.1.1.0/24 -j REJECT iptables -D FORWARD -p tcp --dport 443 -j DROP iptables -I FORWARD -p tcp --dport 80 -j DROP 15. 匹配网卡 iptables -t nat -A POSTROUTING -o eth1 -s 10.1.2.0/24 -j ACCEPT iptables -A INPUT -i vmnet1 -j ACCEPT 16. 白名单功能 iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -A OUTPUT -j REJECT 6. 把当前的防火墙规则保存到默认位置 (/etc/sysconfig/iptables) service iptables save 7. 把当前的防火墙规则保存到指定的文件中 iptables-save > /somewhere/in/the/system/firewall 8. 可以直接编辑防火墙规则文件 vim /somewhere/in/the/system/firewall 9. 从防火墙规则文件中加载规则,这个动作会把现有的规则清空 iptables-restore < /somewhere/in/the/system/firewall 10. 重启防火墙服务,可以清空当前的防火墙设置,并从默认位置加载规则 (/etc/sysconfig/iptables) service iptables restart

 

转载于:https://www.cnblogs.com/zengjfgit/p/4375747.html

你可能感兴趣的文章
无限极分类
查看>>
java基础知识回顾之javaIO类---BufferedInputStream和BufferedOutputStream
查看>>
友好解决POI导入Excel文件行是不是为空
查看>>
PHP+七牛云存储上传图片代码片段
查看>>
【LeetCode】23. Merge k Sorted Lists
查看>>
端口扫描器——ZenmapKail Linux渗透测
查看>>
***phpredis扩展安装总结
查看>>
oracle 创建字段自增长——两种实现方式汇总
查看>>
Android学习笔记之ExecutorService线程池的应用....
查看>>
PHP版本中的VC6,VC9,VC11,TS,NTS区别
查看>>
python与字符集编码
查看>>
Android 学习笔记之Volley开源框架解析(一)
查看>>
修改Tomcat服务器的默认端口号
查看>>
JAVASCRIPT实现网页版:俄罗斯方块
查看>>
Delphi IOS 蓝牙锁屏后台运行
查看>>
C#回调实现的一般过程
查看>>
mssql sql高效关联子查询的update 批量更新
查看>>
Atitit.病毒木马程序的感染 传播扩散 原理
查看>>
Android Studio Gradle
查看>>
jquery-autocomplete 参数说明
查看>>