首页
友链
统计
留言
更多
直播
壁纸
推荐
我的毛线
院长科技
Search
1
本站官方群:894703859------|诚邀各位大佬的入驻!
418 阅读
2
pxe 自动化安装系统
348 阅读
3
新款螺旋帽子编织#夏凉帽#合股线夏凉帽编织
308 阅读
4
10 个Linux Awk文本处理经典案例
306 阅读
5
软件安装
293 阅读
Linux
yaml
iptables
shell
ansible
ssl
命令
文件管理
用户权限
综合集群架构
三剑客
awk
sed
自动化
pxe
编织
编织视频
监控
prometheus
go
go占位符
vue
vue基础
vue项目
web
Nginx
html
vscode
html标签
html表格
css基础
css定位
css精灵图
code
html5
项目
js
jQuery
面向对象
kubernetes
k8s命令
k8s
k8s搭建
database
clickhouse
常用工具
微软
登录
/
注册
Search
标签搜索
基础
js
Nginx
css
webapi
jQuery
面向对象
command
项目
ansible
用户权限
go
html
文件管理
命令
综合集群架构
k8s
pxe
awk
vscode
JustDoIt
累计撰写
112
篇文章
累计收到
4
条评论
首页
栏目
Linux
yaml
iptables
shell
ansible
ssl
命令
文件管理
用户权限
综合集群架构
三剑客
awk
sed
自动化
pxe
编织
编织视频
监控
prometheus
go
go占位符
vue
vue基础
vue项目
web
Nginx
html
vscode
html标签
html表格
css基础
css定位
css精灵图
code
html5
项目
js
jQuery
面向对象
kubernetes
k8s命令
k8s
k8s搭建
database
clickhouse
常用工具
微软
页面
友链
统计
留言
直播
壁纸
推荐
我的毛线
院长科技
搜索到
8
篇与
的结果
2023-11-03
Firewalld防火墙
1.防火墙基本概述RHEL/CentOS 7系统中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewall Manager of Linux systems, Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。相较于传统的Iptables防火墙管理工具firewalld支持动态更新,并加入了区域zone的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。注意一个zone区域仅能绑定一个网卡, 设定不同的匹配规则一个zone区域又可以针对不同的源地址设定不同的规则Firewalld相关配置文件默认定义的模板配置文件/usr/lib/firewalld存储规则配置文件 /etc/firewalld/2.防火墙区域概述 区域 默认规则策略 trusted 允许所有的数据包流入与流出 home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 internal 等同于home区域 work 拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量 external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 block 拒绝流入的流量,除非与流出的流量相关 drop 拒绝流入的流量,除非与流出的流量相关 3.防火墙基本指令参数为了能够使用firwalld服务和相关工具去管理防火墙,必须启动firwalld服务,并且需要禁用以前旧防火墙相关服务, firewall-config(图形界面), firewall-cmdfirewalld的规则分两种状态:runtime运行时: 修改规则马上生效,但是临时生效 [不建议]permanent持久配置: 修改后需要reload重载才会生效 [强烈推荐]firewall-cmd命令分类 参数 作用 zone区域相关指令 --get-default-zone 查询默认的区域名称 --set-default-zone=<区域名称> 设置默认的区域,使其永久生效 --get-active-zones 显示当前正在使用的区域与网卡名称 --get-zones 显示总共可用的区域 --new-zone= 新增区域 services服务相关指令 --get-services 显示预先定义的服务 --add-service=<服务名> 设置默认区域允许该服务的流量 --remove-service=<服务名> 设置默认区域不再允许该服务的流量 Port端口相关指令 --add-port=<端口号/协议> 设置默认区域允许该端口的流量 --remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量 Interface网卡相关指令 --add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域 --change-interface=<网卡名称> 将某个网卡与区域进行关联 其他相关指令 --list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息 --reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 4.防火墙区域配置策略1.为了能正常使用firwalld服务和相关工具去管理防火墙,必须启动firwalld服务, 同时关闭以前旧防火墙相关服务//禁用旧版防火墙服务 [root@xuliangwei ~] [root@xuliangwei ~] //启动firewalld防火墙, 并加入开机自启动服务 [root@xuliangwei ~] [root@xuliangwei ~] //备份firewalld相关配置文件(重要) [root@Firewalld ~] 2.zone区域相关指令 [root@xuliangwei ~]# firewall-cmd --get-default-zone public [root@xuliangwei ~]# firewall-cmd --set-default-zone=work [root@xuliangwei ~]# firewall-cmd --permanent --add-service=http --zone=work [root@xuliangwei ~]# firewall-cmd --change-interface=eth0 --zone=work 3.将某网段IP路由至home区域, 由该区域规则进行匹配决定是否放行[root@Firewalld ~] [root@Firewalld ~] success [root@Firewalld ~] success //检查相关规则 [root@Firewalld ~] home sources: 192.168.56.0/24 public interfaces: eth0 br0 vnet0 4.查询firewald相关规则 [root@Firewalld ~]# firewall-cmd --get-active-zones home sources: 192.168.69.0/24 work interfaces: eth0 br0 vnet0 [root@xuliangwei ~]# firewall-cmd --list-all --zone=work work (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client 'http' ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: 5.查询public区域是否允许请求SSH HTTPS协议的流量[root@Firewalld ~] yes [root@Firewalld ~] no 5.防火墙服务访问策略1.配置防火墙, 允许请求http https协议的流量设置为永久允许,并立即生效[root@Firewalld ~] success //重启加载生效 [root@Firewalld ~] success //检查相关配置 [root@Firewalld ~] ssh dhcpv6-client 'http https' 2.配置防火墙, 允许请求php-fpm服务的流量设置为永久允许,并立即生效[root@Firewalld ~]# cd /usr/lib/firewalld/services/ [root@Firewalld services]# cp http.xml php-fpm.xml [root@Firewalld services]# cat php-fpm.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>PHP-FPM</short> <description> php-fpm </description> <port protocol="tcp" port="9000"/> </service> [root@Firewalld ~]# firewall-cmd --permanent --add-service=php-fpm [root@Firewalld ~]# firewall-cmd --list-services ssh dhcpv6-client 'http https php-fpm' [root@Firewalld ~]# yum install php-fpm -y [root@Firewalld ~]# systemctl start php-fpm ~ telnet 192.168.56.11 9000 Trying 192.168.56.11... Connected to 192.168.56.11. Escape character is '^]'. 3.配置防火墙, 请求https协议的流量设置为永久拒绝,并立即生效[root@Firewalld ~] success [root@Firewalld ~] success //检查当前活动服务 [root@Firewalld ~] ssh dhcpv6-client http 6.防火墙端口访问策略1.配置防火墙, 访问8080/tcp 8080/udp端口的流量策略设置为永久允许, 并立即生效 [root@Firewalld ~]# firewall-cmd --permanent --add-port=8080/udp --add-port=8080/tcp [root@Firewalld ~]# firewall-cmd --reload success [root@Firewalld ~]# firewall-cmd --list-ports 8080/tcp 8080/udp 2.配置防火墙, 访问8080/udp的端口流量设置为永久拒绝,并立即生效[root@Firewalld ~] success [root@Firewalld ~] success 8080/tcp 7.防火墙端口转发策略端口转发是指传统的目标地址映射,实现外网访问内网资源流量转发命令格式为firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>1.把访问本机555/tcp端口的流量转发到22/tcp端口,要求当前和长期有效[root@Firewalld ~] success [root@Firewalld ~] success 2.把访问本机6666/tcp端口的流量转发到80/tcp端口,要求当前和长期有效[root@Firewalld ~] [root@Firewalld ~] success [root@Firewalld ~] success 3.移除本地555/tcp端口转发策略, 要求当前和长期有效[root@Firewalld ~] success [root@Firewalld ~] success 8.防火墙富规则策略firewalld中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置, 优先级在所有的防火墙策略中也是最高的。1.富规则帮助手册man firewall-cmd man firewalld.richlanguage rule [source] [destination] service|port|protocol|icmp-block|masquerade|forward-port [log] [audit] [accept|reject|drop] rule [family="ipv4|ipv6"] source address="address[/mask]" [invert="True"] destination address="address[/mask]" invert="True" service name="service name" port port="port value" protocol="tcp|udp" protocol value="protocol value" forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address" log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"] accept | reject [type="reject type"] | drop //区里的富规则按先后顺序匹配,按先匹配到的规则生效。 1.允许来自于192.168.69.113/32主机请求8081-8083端口, 当前和永久生效[root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.69.113/32 port port=8081-8083 protocol=tcp accept' success [root@Firewalld ~] success 2.拒绝来自192.168.69.113/32主机所有的请求, 当前和永久生效[root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.69.113/32 reject' success [root@Firewalld ~] success 3.拒绝来自于192.168.69.0/24网段请求ssh服务, 当前和永久生效[root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.69.0/24 service name=ssh reject' success [root@Firewalld ~] success 4.限制所有请求ftp服务流量, 每分钟1个并发, 当前和永久生效[root@Firewalld ~] --add-rich-rule='rule service name=ftp log prefix="ftp " level=notice limit value=1/m accept' success [root@Firewalld ~] success //开启多个ftp连接, 查看日志 [root@Firewalld ~] Apr 21 11:16:04 kvm-node1 kernel: ftp IN=br0 OUT= MAC=00:0c:29:72:6a96:00:50:56:c0:00:02:08:00 SRC=192.168.56.1 DST=192.168.56.11 LEN=64 TOS=0x00 PREC=0x00 TTL=64 ID=21160 DF PROTO=TCP SPT=57050 DPT=21 WINDOW=65535 RES=0x00 SYN URGP=0 5.防止规则设定错误导致网络连接断开,用于调试,规则在300秒后失效[root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.69.113/32 service name=ssh reject' --timeout=300 6.将192.168.69.113/32主机访问443/tcp的数据包转发到本机的22/tcp端口, 当前和永久生效//端口转发规则 [root@Firewalld ~] --add-rich-rule='rule family=ipv4 source address=192.168.56.1/32 forward-port port=443 protocol=tcp to-port=22' success [root@Firewalld ~] success 7.允许192.168.69.113/32访问httpd, 并且记录日志, 日志级别为notice,日志前缀为NEW HTTP, 限制每秒最多3个并发, 当前和永久生效 [root@Firewalld soft] --add-rich-rule='rule family=ipv4 source address=192.168.69.113/32 service name=http,https log level=notice prefix="New Http " limit value="3/s" accept' success [root@Firewalld soft] success 转 xuliangwei.com
2023年11月03日
6 阅读
0 评论
0 点赞
2023-11-01
cron 命令
1.Crond计划任务概述什么是计划任务,计划任务类似于我们平时生活中的闹钟。在Linux系统的计划任务服务crond可以满足周期性执行任务的需求。crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据Schedule one-time tasks with at. 一次性调度执行 at Schedule recurring jobs with cron. 循环调度执行 cron Schedule recurring system jobs. 所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向 //循环调度执行cron 进程每分钟会处理一次计划任务 [root@xuliangwei ~] [root@xuliangwei ~] root 1201 0.0 0.0 126264 1640 ? Ss 11:15 0:00 /usr/sbin/crond -n 计划任务分为以下两种情况:1.系统级别的定时任务:清理系统缓存临时文件清理系统信息采集日志文件切割2.用户级别的定时任务:定时同步互联网时间定时备份系统配置文件定时备份数据库文件2.crond配置文件详解文件 说明 /etc/crontab /etc/cron.deny /var/spool/cron 3.crond计划任务管理crond任务管理参数 含义 指定示例 [root@xuliangwei ~] -e 编辑crontab文件内容 crontab -e -l 查看crontab文件内容 crontab -l -r 删除crontab文件内容 crontab -r -u 管理其他用户的计划任务 crontab -u xuliangwei -l 注意: crontab {-l -e}实际上就是在操作/var/spool/cron/username crond时间含义# 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 # | | | | | # * * * * * command to be executed crond编写示例00 02 * * * ls //每天2:00整 00 02 1 * * ls //每月1号2:00整 00 02 14 2 * ls //每年2月14号2:00整 00 02 * * 7 ls //每周日2:00整 00 02 * 6 5 ls //每年6月的周五2:00整 00 02 14 * 7 ls //每月14号2:00整或每周日2:00整,这两个时间都执行 00 02 14 2 7 ls //每年 2 月 14 号 2:00 整 或者 每周日 2:00 整,这两个时间都执行 00 02 * * * ls //每天2:00整 * 02 * * * ls //每天2:00中的每一分钟 (逻辑错误) * * * * * ls //每分钟执行 ls * * 14 2 * ls //2月14号的每分钟(逻辑错误) */5 * * * * ls //每隔5分钟 00 02 * 1,5,8 * ls //每年1,5,8月的每天2:00整 00 02 1-8 * * ls //每月1到8号的2:00整 crond书写规范 [root@xuliangwei ~]# crontab -l ##time sync by xuliangwei 2018-00-00 */5 * * * * /usr/sbin/ntpdate time.windows.com &>/dev/null [root@xuliangwei ~]# crontab -l ##backup www to /backup xuliangwei 2018-00-00 00 01 * * * /bin/sh /soft/scripts/www_backup.sh &>/dev/null [root@xuliangwei ~]# crontab -l ####backup www to /backup xuliangwei 2018-00-00 00 01 * * * /bin/sh /soft/scripts/www_backup.sh &>/dev/null 4.crond配置编写实例[root@xuliangwei ~]# crontab -e #每天凌晨切割nginx日志 00 00 * * * /bin/sh -x /soft/scripts/cut_nginx.sh &> /soft/scripts/log/nginx.log #每天5点备份数据库 00 05 * * * /bin/sh -x /soft/scripts/dump_sql.sh &>/soft/scripts/log/mysql.log #每5分钟检测数据库是否正常 */5 * * * * /bin/sh /soft/scripts/start_mysql.sh &>/dev/null 1.我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。 2.crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。 3.几乎每个服务器都会用到crond服务。 5.crond计划任务调试1.调整任务每分钟执行, 检测是否是否正常, 有些任务不要频繁执行2.调整系统时间然后在检测任务, 生产不建议直接使用此方式3.执行脚本, 将脚本执行输出写入指定日志文件, 观察日志内容是否正常4.注意一些任务命令带来的问题echo “xuliangwei” >>/tmp/xlw.log &>/dev/null5.命令使用绝对路径, 防止无法找到命令导致定时任务执行故障6.查看/var/log/cron日志进行调试建议: 将需要定期执行的任务写入脚本中, 建立/soft/scripts目录统一存放脚本, 脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常, 然后将脚本加入计划任务测试, 测试后无问题将脚本输出写入对应的日志文件中即可。 1.手动执行保留执行命令的正确结果 2.编写脚本 脚本需要统一路径/soft/scripts 脚本开头建议填写注释信息, 包括执行时间、周期、任务 脚本内容复制执行成功的命令至脚本文件中(减少每个环节出错几率) 脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句 脚本执行的输出信息不要随意打印, 可以重定向至其他位置保留或丢入黑洞 3.执行脚本 使用bash执行, 防止脚本没有增加执行权限(/usr/bin/bash) 执行命令以及脚本成功后并复制该命令 4.编写计划任务 加上必要的注释信息, 人、时间、任务 设定计划任务执行的周期 粘贴执行脚本的命令(不要手敲) 5.调试计划任务 增加任务频率测试、调整系统时间测试(不能用于生产) 检查环境变量问题、检查crond服务产生日志进行排查 转 xuliangwei.com
2023年11月01日
18 阅读
0 评论
0 点赞
2023-11-01
find 命令
文件查找概述Linux系统中的find命令在查找文件时非常有用而且方便。它可以根据不同的条件来进行查找文件:例如权限、拥有者、修改日期/时间、文件大小等等。 同时find命令是Linux下必须掌握的。find 命令的基本语法如下 命令 路径 选项 表达式 动作 find [path...] [options] [expression] [action] 查找 地区 犯罪嫌疑人 性别男25-30岁 枪决行动 find名称查找 touch /etc/sysconfig/network-scripts/{ifcfg-eth1,IFCFG-ETH1} [root@xuliangwei ~]# find /etc -name "ifcfg-eth1" [root@xuliangwei ~]# find /etc -iname "ifcfg-eth1" [root@xuliangwei ~]# find /etc/ -name "ifcfg-eth*" [root@xuliangwei ~]# find /etc -iname "ifcfg-eth*" find大小查找 [root@xuliangwei ~]# find /etc -size +5M [root@xuliangwei ~]# find /etc -size 5M [root@xuliangwei ~]# find /etc -size -5M find时间查找 [root@xuliangwei ~]# for i in {01..28};do date -s 201802$i && touch file-$i;done [root@xuliangwei ~]# find ./ -iname "file-*" -mtime +7 [root@xuliangwei ~]# find ./ -iname "file-*" -mtime -7 [root@xuliangwei ~]# find ./ -iname "file-*" -mtime 7 find /backup/ -iname "*.bak" -mtime +7 -delete find /backup/ -iname "*.bak" -mtime +90 -delete find用户查找//查找属主是jack [root@xuliangwei ~] //查找属组是admin [root@xuliangwei ~] //查找属主是jack, 属组是admin [root@xuliangwei ~] //查找属主是jack, 并且属组是admin [root@xuliangwei ~] //查找属主是jack, 或者属组是admin [root@xuliangwei ~] //查找没有属主 [root@xuliangwei ~] //查找没有属组 [root@xuliangwei ~] //查找没有属主或属组 [root@xuliangwei ~] find类型查找 [root@xuliangwei ~]# find /dev -type f [root@xuliangwei ~]# find /dev -type d [root@xuliangwei ~]# find /dev -type l [root@xuliangwei ~]# find /dev -type b [root@xuliangwei ~]# find /dev -type c [root@xuliangwei ~]# find /dev -type s [root@xuliangwei ~]# find /dev -type p find权限查找 [root@xuliangwei ~]# find . -perm 644 -ls [root@xuliangwei ~]# find /home -perm -324 [root@xuliangwei ~]# find . -perm -222 -ls [root@xuliangwei ~]# find /home -perm /442 [root@xuliangwei ~]# find /usr/sbin -perm -4000 -ls [root@xuliangwei ~]# find /usr/sbin -perm -2000 -ls [root@xuliangwei ~]# find /usr/sbin -perm -1000 -ls find处理动作当查找到一个文件后, 需要对文件进行如何处理, 默认动作 -print-print -ls -delete -exec -ok [root@xuliangwei ~]# find /etc -name "ifcfg*" [root@xuliangwei ~]# find /etc -name "ifcfg*" -print [root@xuliangwei ~]# find /etc -name "ifcfg*" -ls [root@xuliangwei ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \; [root@xuliangwei ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \; [root@xuliangwei ~]# find /etc -name "ifcfg*" -exec rm -f {} \; [root@xuliangwei ~]# find /etc -name "ifcfg*" -delete find结合xargs//xargs将查找到结果一个一个的处理 [root@xuliangwei ~] [root@xuliangwei ~] [root@xuliangwei ~] 转 xuliangwei.com
2023年11月01日
8 阅读
0 评论
0 点赞
2023-11-01
Linux系统基础命令
系统目录结构几乎所有的计算机操作系统都是用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件, 而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支, 所以该结构又被称为“目录树”。Linux系统中也沿用了这种文件结构, 所有目录和文件都在 "根目录"下, 目录名为"/"。FHS(文件系统层次标准)定义了在根目录下的主要目录以及每个目录应该存放什么文件。/etc 系统重要配置文件, 以及常用服务配置文件 /var 存放系统引导启动时产生的可变文件,文件通常动态更改的,例如: 缓存目录,日志文件 /run 系统启动后, 运行的程序产生的运行时数据, 包括进程的pid文件,锁文件等 /home 普通用户的主目录, 普通用户的家目录默认为/HOME/USERNAME /root 超级管理员的主目录, 普通用户无权操作 /tmp 存放临时文件, 一般存放超过10天以上都会自动删除,可以更改删除临时文件的期限 /boot 存放系统引导时候需要的文件 /dev 存放设备文件 /usr 安装的软件, 共享库, 重要的子目录有 /usr/bin 用户命令目录 /usr/sbin 管理员命令目录 /usr/local 本地自定义安装的软件 /bin --> /usr/bin /sbin --> /usr/sbin lib -> usr/lib lib64 -> usr/lib64 文件路径定位路径的作用:定位文件具体位置信息你要在那里创建什么文件?你要将什么文件复制到什么地方?你要删除的文件在什么地方?1.特殊目录: (.)和(..)在每个目录下, 都会固定存在两个特殊目录, 分别是一个点(.)和两个(..)的目录。一个点代表当的是当前目录, 两个点代表的是当前目录的上层目录。注意: 在Linux下所有以点开始的文件都是"隐藏文件", 对于这类文件, 只使用命令ls -l是看不到的, 必须要使用ls -la才可以看到,如下所示:[root@xuliangwei ~] [root@xuliangwei opt] [root@xuliangwei opt] . .. 2.绝对路径:Linux系统采用了目录树的文件组织结构, 在Linux下每个目录或文件都可以从根目录处开始寻找, 比如: /usr/bin目录。这种从根目录开始的全路径被称为"绝对路径", 绝对路径一定是以 “/” 开头的。如何确认当前所在的目录, 可以使用pwd命令查看:[root@xuliangwei ~] /root 3.相对路径相对路径, 关键点在于当前在什么路径下。假设当前目录在/usr/local下, 那么它的上层目录(/usr目录)可以用../表示, 而``/usr/local的下层目录(src)则可以用./src`表示。所谓的(.)和(..)目录实际上也是属于相对路径//进入/opt目录 [root@xuliangwei ~] [root@xuliangwei opt] total 76 drwxr-xr-x. 2 root root 69632 Dec 4 11:00 . dr-xr-xr-x. 33 root root 4096 Dec 4 10:40 .. //进入当前目录 [root@xuliangwei opt] //显示当前目录 [root@xuliangwei opt] /opt //进入当前目录的上层目录 [root@xuliangwei opt] //进入上层目录,也就是/目录 [root@xuliangwei /] / cd命令常见用法:. 表示用户所处的当前目录 .. 表示上级目录; ~ 表示当前用户自己的家目录 cd - //切换上次所在目录 cd ~ //切换至当前用户家目录 cd //切换至当前用户家目录 cd . //.代表当前目录,一般在拷贝、移动等情况下使用 cd .. //切换至当前目录的上级目录 目录管理命令1.目录创建命令mkdir2.以树状显示目录结构命令tree-L: 显示目录树的层级 # tree # tree -L 1 / 文件管理命令Linux一切皆为文件, 在对Linux进行配置时, 很大程度上就是处理文件的过程, 所以掌握文件的相关操作是非常有必要的。下面我们介绍如何对文件进行, 创建、删除、移动、重命名, 以及查看文件内容, 至于如何编辑文件, 在后面具体介绍编辑器的时候在做详细阐述。1.文件创建命令touch2.文件时间stat[root@test-example ~] File: 'test.txt' Size: 2 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 67335626 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2018-01-21 12:12:48.949097044 +0800 Modify: 2018-01-21 12:12:35.243302963 +0800 Change: 2018-01-21 12:12:35.243302963 +0800 Birth: - 访问时间:atime,查看内容 修改时间:mtime,修改内容 改变时间:ctime,文件属性,比如权限 删除时间:dtime,文件被删除的时间 3.文件目录复制命令cpcp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... # cp name /tmp/name_copy # cp name /tmp/name # cp -p name /tmp/name_p # mkdir name_name # cp -r name_name/ /tmp/name_tmp # cp -rv /etc/hosts /etc/hostname /tmp # cp -rv /etc/hosts /etc/hostname ./ # cp -rv /etc/hosts /etc/hosts.bak # cp -rv /etc/{hosts,hosts.bak} # cp -rv /etc/hosts{,-org} 3.文件目录移动命令mvmv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... # mv file /tmp/ # mv file /tmp/file_test # mv dir/ /tmp/ # touch file{1..3} # mv file1 file2 file3 /opt/ # mkdir dir{1..3} # mv dir1/ dir2/ dir3/ /opt 4.文件目录删除命令rmrm [OPTION]... FILE... -r 递归 -f 强制删除 -v 详细过程 # rm anan # rm anan -f # rm -r dir/ # rm -rf dir/ # mkdir /home/dir10 # touch /home/dir10/{file2,file3,.file4} # rm -rf /home/dir10/* # ls /home/dir10/ -a . .. .file4 # touch file{1..10} # touch {1..10}.pdf # rm -rf file* # rm -rf *.pdf 文件查看命令cat 示例:cat /etc/passwd 示例:cat -n /etc/passwd 示例:cat >> xuliangwei.txt <<EOF test EOF head 示例:head /etc/passwd 示例:head -n5 /etc/passwd tail 示例:tail /etc/passwd 示例:tail -f /var/log/messages more 示例:more /etc/passwd less 示例:less /etc/passwd 文件下载命令wget -O -T -q --spider 示例:wget http: curl 示例:curl -o http: yum install lrzsz rz sz 示例:sz filename 命令查找命令locate 示例:locate /etc/sh 示例:locate -i /etc/sh which 示例:which ls whereis 示例:whereis ls 示例:whereis -b ls 字符处理命令1.使用sort排序很多情况下需要对无序的数据进行排序, 这时就需要用到sort排序了。sort [OPTION]... [FILE]... -r:倒序 -n:按数字排序 -t:指定分隔符(默认空格) -k:指定第几列, 指定几列几字符(指定1,1 3.1,3.3) [root@xuliangwei ~]# cat >> sort.txt <<EOF b:3 c:2 a:4 e:5 d:1 f:11 EOF [root@xuliangwei ~]# sort sort.txt a:4 b:3 c:2 d:1 e:5 f:11 [root@xuliangwei ~]# sort -t ":" -k2 sort.txt d:1 f:11 c:2 b:3 a:4 e:5 [root@xuliangwei ~]# sort -t ":" -n -k2 p.txt d:1 c:2 b:3 a:4 e:5 f:11 192.168.3.1 00:0F:AF:81:19:1F 192.168.3.2 00:0F:AF:85:6C:25 192.168.3.3 00:0F:AF:85:70:42 192.168.2.20 00:0F:AF:85:55:DE 192.168.2.21 00:0F:AF:85:6C:09 192.168.2.22 00:0F:AF:85:5C:41 192.168.0.151 00:0F:AF:85:6C:F6 192.168.0.152 00:0F:AF:83:1F:65 192.168.0.153 00:0F:AF:85:70:03 192.168.1.10 00:30:15:A2:3B:B6 192.168.1.11 00:30:15:A3:23:B7 192.168.1.12 00:30:15:A2:3A:A1 192.168.1.1 00:0F:AF:81:19:1F 192.168.2.2 00:0F:AF:85:6C:25 192.168.3.3 00:0F:AF:85:70:42 192.168.2.20 00:0F:AF:85:55:DE 192.168.1.21 00:0F:AF:85:6C:09 192.168.2.22 00:0F:AF:85:5C:41 192.168.0.151 00:0F:AF:85:6C:F6 192.168.1.152 00:0F:AF:83:1F:65 192.168.0.153 00:0F:AF:85:70:03 192.168.3.10 00:30:15:A2:3B:B6 192.168.1.11 00:30:15:A3:23:B7 192.168.3.12 00:30:15:A2:3A:A1 [root@student tmp]# sort -t. -k3.1,3.1nr -k4.1,4.3nr test.txt 2.使用uniq删除重复内容如果文件中有多行完全相同的内容, 当前是希望能删除重复的行,同时还可以统计出完全相同的行出现的总次数, 那么就可以使用uniq命令解决这个问题(但是必须配合sort使用)。uniq [OPTION]... [INPUT [OUTPUT]] -c 计算重复的行 //演示uniq的用法, 首先创建一个文件: [root@xuliangwei ~] abc 123 abc 123 //uniq需要和sort一起使用, 先使用sort排序, 让重复内容连续在一起 [root@xuliangwei ~] 123 123 abc abc //使用uniq去除相邻重复的行 [root@xuliangwei ~] 123 abc //使用-c参数, 能统计出文件中每行内容重复的次数 [root@xuliangwei ~] 2 123 2 abc 3.使用cut命令截取某一个字段cut OPTION... [FILE]... -d:指定分隔符 -f:数字,取第几列 –f3,6三列和6列 -c:按字符取(空格也算) #echo “Im xuliangwei, is QQ 552408925” >xuliangwei.com # sed 's#,# #g' xuliangwei.txt | cut -d " " -f2,6 # sed 's#,# #g' xuliangwei.txt | awk -F " " '{print $2 " " $5}' # awk -F '[, ]+' '{print $2,$5}' xuliangwei.txt # awk '{print $2 $5}' xuliangwei.txt | awk -F "," '{print $1" " $2}' # awk -F "[, ]" '{print $2 " " $6}' xuliangwei.txt 此类问题是运维工作中最常见的问题。可以演变成分析日志,查看TCP各个状态连接数,查看单IP连接数排名等 [root@student tmp]# cat web.log http: http: http: http: http: http: [root@student tmp]# awk -F '/' '{print $3}' web.log|sort -rn|uniq –c 3 www.xuliangwei.comxuliangwei.com 2 post.xuliangwei.comxuliangwei.com 1 mp3.xuliangwei.comxuliangwei.com [root@student tmp]# cut -d / -f3 web.log|sort -rn|uniq –c 3 www.xuliangwei.comxuliangwei.com 2 post.xuliangwei.comxuliangwei.com 1 mp3.xuliangwei.comxuliangwei.com 4.使用wc统计wc - print newline, word, and byte counts for each file显示文件的行、单词与字节统计信息 wc [OPTION]... [FILE]... -l:显示文件行数 -c:显示文件字节 -w:显示文件单词 //统计fstab有多少行 [root@student ~] 15 /etc/fstab 显示/etc/services 文件行号 [root@student ~] 10774 /etc/services //扩展方法 [root@student ~] [root@student ~] [root@student ~] [root@student ~] 转载 xuliangwei.com
2023年11月01日
8 阅读
0 评论
0 点赞
2023-11-01
Linux系统Bash初识
转载 xuliangwei.com1.Linux系统终端概述服务器终端切换: Ctrl + Alt + F1 … F6虚拟机终端切换: Ctrl +Shift +Alt +F1 … F6虚拟终端由mingetty程序生成 [root@xuliangwei ~]# tty /dev/tty1 [root@xuliangwei ~]# tty /dev/pts/1 2.Linux系统Bash管理简单的说, Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。Linux, Shell也有多种不同的版本。主要有下列版本的Shell:BASH Shell: 是一个为GNU计划编写的Unix shell, 是许多Linux发行版的默认ShellC Shell: 是SUN公司Shell的BSD版本。Z Shell: 它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。还有许多传统UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等, Shell Script大致都类同,当您学会一种Shell以后,其它的Shell很快就上手, 大多数的时候, 一个Shell脚本 通常可以在很多种Shell上使用。查看当前使用的shell[root@xuliangwei ~] /bin/bash 查看Linux可用的 shell[root@xuliangwei ~] /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh /bin/zsh Bash Shell提示符[root@xuliangwei ~] [\u@\h \W]\$ [root@xuliangwei ~] Sat Jan 20 09:45:40 EST 2018 [root@xuliangwei ~] Shell 语法命令行bash shell, 为用户提供输入, 执行命令的界面//等待用户输入,执行命令, $ = 普通用户, [student@desktop0 ~]$ //bash Shell 执行命令 //命令 选项 参数 command [-options] [arguments] [root@xuliangwei ~] [root@xuliangwei ~] [root@xuliangwei ~] 命令: 命令的主体 一个命令有多个选项, 多个选项可以合并在一起 选项: 用于调节命令的具体功能 以 “-”引导短格式选项(单个字符),例如“-l” 以“--”引导长格式选项(多个字符),例如“--color” 多个短格式选项可以写在一起,只用一个“-”引导,例如“-al” 参数: 命令操作的对象,如文件、目录名等 我们可以使用SHELL实现对Linux的大部分管理1.文件管理2.权限管理3.用户管理4.磁盘管理5.网络管理6.软件管理...使用Shell的方式输入命令 --> 效率低 -->适合少量的工作Shell Script --> 效率高-->适合复杂重复性的工作BASH所支持的功能命令行编辑快捷键内部命令与外部命令命令补全与路径补全命令别名与命令历史转义字符与路径展开通配符与特殊字符重定向与管道技术2.1.Bash特性:命令补全通过上下方向键来调取过往执行过的Linux命令;命令或参数仅需输入前几位就可以用Tab键补全;tab键可以实现命令补全, 路径补全和命令实现方式一致, 工作中我们经常用到tab补全, 减少执行命令以及路径出错率。1.命令补全2.提示功能3.减少出错 [root@xuliangwei ~]# ifcon [root@xuliangwei ~]# ifconfig [root@xuliangwei ~]# if if ifconfig ifenslave ifrename ifcfg ifdown ifnames ifup [root@xuliangwei ~]# ls /etc/sysconfig/network-scripts/ 2.2.Bash特性:命令快捷键终端快捷键的使用可以帮助我们大大提升效率Ctrl + A Ctrl + E Ctrl + C Ctrl + D Ctrl + Z Ctrl + L Ctrl + K Ctrl + U Ctrl + R History查看系统命令历史, 追溯之前发生情况命令选项-w 保存命令历史到历史文件-c 清空命令历史记录, 不会情况文件-d 删除命令历史的第 N 条行history命令历史相关快捷键//使用双 !! 可执行上一条命令 [root@xuliangwei ~] xuliangwei.com [root@xuliangwei ~] ls xuliangwei.com //输入!6, 执行history命令历史中第 6 行命令 [root@xuliangwei ~] touch xuliangwei.com //使用!cat, 调用history命令历史最近一次执行过的cat命令 [root@xuliangwei ~] [root@xuliangwei ~] cat /etc/sysconfig/network-scripts/ifcfg-eth0 [root@xuliangwei ~] //调用上一条命令的最后参数或选项, 按下ESC松开, 然后按下 "." [root@xuliangwei ~] [root@xuliangwei ~] //第二种方式, 输入!$ [root@xuliangwei ~] ls /etc/passwd /etc/passwd 2.3.Bash特性:命令别名命令别名将用户经常使用的复杂命令简单化, 可以用"alias 别名名称=命令"命令创建属于自己的命令别名, 若要取消一个命令别名,则是用unalias 别名名称命令。 [root@xuliangwei ~]# alias if0='ifconfig eth0' [root@xuliangwei ~]# if0 [root@xuliangwei ~]# alias ifconfig='ifconfig eth0' [root@xuliangwei ~]# /sbin/ifconfig [root@WebServer ~]# \ifconfig [root@xuliangwei ~]# echo "alias ifconfig='ifconfig eth0'" >> ~/.bashrc [root@xuliangwei ~]# unalias ifconfig 2.4.Bash特性:命令流程当我们执行一个命令, 整个命令执行流程如下:1.判断命令是否通过绝对路径执行2.判断命令是否存在别名3.判断用户输入的是内部命令还是外部命令4.内部命令直接执行, 外部命令检测是否存在缓存5.检测PATH路径, 有执行, 无报错内部命令: shell程序自带的命令。外部命令: 在系统PATH变量的某个路径下的可执行程序。使用type命令检测用户输入的命令属于内部命令还是外部命令。//cd命令属于shell内部命令 [root@linux-node1 ~] cd is a shell builtin cd is /usr/bin/cd //ping属于外部命令, 同时会打印当前命令路径 [root@xuliangwei ~] ping is /bin/ping PATH变量定义的路径, 作用是告诉Bash执行的外部命令存放的位置,Bash会在这些路径中进行逐个扫描。 [root@xuliangwei ~]# echo "123" 123 [root@xuliangwei ~]# echo -e "123 \n456" 123 456 [root@xuliangwei ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@xuliangwei ~]# PATH=/soft/bin:$PATH echo 'export PATH=/soft/bin:$PATH' >> /etc/profile 事实上执行过的外部命令都会保存在内存缓存中, 当再次执行相同的命令, 会通过缓存调取执行, 也就意味着不会搜索PATH路径。//表缓存命令所在位置 [root@xuliangwei ~] hits command 1 /usr/bin/tty 3 /sbin/ifconfig //已缓存命令,如果移动位置会导致无法找到该命令 [root@xuliangwei ~] [root@xuliangwei ~] -bash: /sbin/ifconfig: No such file or directory //删除缓存过的ifconfig命令, 即可执行 [root@xuliangwei ~] [root@xuliangwei ~] //当然可以清空缓存表 [root@xuliangwei ~] //命令缓存hash需要注意如下情况: 1.如果执行外部命令1次就会对该命令进行缓存 2.如果将命令移动了位置 a.使用绝对路径执行 b.删除hash表的缓存指令 总结, 当我们执行了一个ping命令之后, 整个命令执行的流程步骤如下:1.检查执行的是否是绝对路径执行2.检查该ping命令是否存在别名3.检查该ping命令是内部命令还是外部命令4.如果是内部指令直接执行, 如果是外部命令5.检测该命令是否有缓存,如果没有,查找PATH变量6.检查PATH路径直到查找到该命令然后执行7.如果没有找到该命令则返回错误。command not found2.5.Bash特性:路径展开Linux Shell下路径展开用花括号包括, 逗号分隔, 这样花括号里的内容会被展开形成列表。[root@xuliangwei ~] mkdir: created directory `/tmp/zz' mkdir: created directory `/tmp/zz/a' mkdir: created directory `/tmp/zz/a/b' mkdir: created directory `/tmp/yy' mkdir: created directory `/tmp/yy/a' mkdir: created directory `/tmp/yy/a/b' //删除目录 [root@xuliangwei ~] //通过路径展开方式创建目录 [root@xuliangwei ~] mkdir: created directory `/tmp/zz' mkdir: created directory `/tmp/zz/a' mkdir: created directory `/tmp/zz/a/b' mkdir: created directory `/tmp/yy' mkdir: created directory `/tmp/yy/a' mkdir: created directory `/tmp/yy/a/b' 思考:在/tmp 路径下创建以下目录 etc/init.d etc/sysconfig usr/lib usr/bin usr/include var/spool var/run proc sys bin 2.6.Bash特性:转义字符Shell解释器提供了非常丰富的转义字符, 来实现字符处理以及命令替换。4类常用转义字符反斜杠(\):使反斜杠后面的一个变量变为字符串。单引号(''):转义其中所有的变量为单纯的字符串。双引号(""):保留其中的变量属性,不进行转义处理。反引号(``):把其中的命令执行后返回结果。//将特殊字符转换为正常字符 [root@xuliangwei ~] shoping is 00 [root@xuliangwei ~] shoping is $500 //转义其中特殊字符为普通字符串 [root@xuliangwei ~] shoping is $500 //使用$()实现命令替换 [root@xuliangwei ~] The Directory is /root //使用``实现命令替换 [root@xuliangwei ~] The Directory is /root //转义其中所有的变量为单纯的字符串 [root@xuliangwei ~] [root@xuliangwei ~] file-2017-12-03-04-18 [root@xuliangwei ~] [root@xuliangwei ~] file-2017-12-03-04-18 file-`date +%F-%H-%S` 2.7.Bash特性:获取帮助1.通过man命令获取帮助手册的常见级别: 1(普通用户命令手册) , 5(配置文件手册), 8(管理员命令手册) g : 回到手册的顶部 G : 去到文档的底部 / : 输入要搜索的关键字,进行文档搜索 q: 退出文档 回车: 往下滚动一行 空格键: 往下翻一页 man -a passwd man 5 passwd man 1 passwd man -k passw 找到所有的包含passwd关键字的手册并且列出来 2.通过info或pinfo获得帮助首页寻找Textinfo文档,如果没有,强制打开对应的Man文档 与vi风格类似,快捷键: 空格:翻页 HOME: 返回页面顶部 END:返回页面底部 上箭头: 光标上移动一行 下箭头: 光标下移动以行 左箭头: 返回上一章节 右箭头: 浏览光标所在章节 d: 回到手册首页 q: 退出手册 强制打开指定级别的man文档 $ pinfo -m 5 passwd
2023年11月01日
5 阅读
0 评论
0 点赞
1
2