首页
恋爱日记
数据统计
留言板
更多
友情链接
Search
1
CentOS7安装部署weblogic12.1.1
3,131 阅读
2
Docker真的被Kubernetes放弃了吗?
2,846 阅读
3
一款可以自定义VScode背景的插件
2,688 阅读
4
Nginx搭建本地YUM仓库
2,356 阅读
5
CentOS 7安装fail2ban+Firewalld防止SSH爆破与CC攻击
2,162 阅读
Prometheus网站监控面板
Vscode
Typecho优化
Ops工具
Linux
Shell
Nginx
Weblogic
云原生
Kubernetes
Docker
Ceph
监控
Promethues
Zabbix
Grafana
数据库
MySQL
登录
Search
废柴阿尤
累计撰写
25
篇文章
累计收到
31
条评论
首页
栏目
Prometheus网站监控面板
Vscode
Typecho优化
Ops工具
Linux
Shell
Nginx
Weblogic
云原生
Kubernetes
Docker
Ceph
监控
Promethues
Zabbix
Grafana
数据库
MySQL
页面
恋爱日记
数据统计
留言板
友情链接
搜索到
10
篇与
的结果
2023-12-09
CentOS7安装部署weblogic12.1.1
一、安装部署weblogic{collapse}{collapse-item label="1.环境准备" open}[root@weblogic72 ~]# ifconfig eth0 | sed -n 2p inet 10.0.0.72 netmask 255.255.255.0 broadcast 10.0.0.255 [root@weblogic72 ~]# ifconfig eth1 | sed -n 2p inet 172.16.1.72 netmask 255.255.255.0 broadcast 172.16.1.255 [root@weblogic72 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 12M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/sda3 58G 4.0G 54G 7% / /dev/sda1 197M 110M 88M 56% /boot tmpfs 394M 0 394M 0% /run/user/0 [root@weblogic72 ~]# free -h total used free shared buff/cache available Mem: 3.8G 221M 3.5G 11M 94M 3.5G Swap: 0B 0B 0B [root@weblogic72 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@weblogic72 ~]# uname -r 3.10.0-1160.el7.x86_64 [root@weblogic72 ~]# {/collapse-item}{collapse-item label="2.配置环境"}# weblogic不支持root用户安装,需创建普通用户进行安装 [root@weblogic72 ~]# groupadd weblogic [root@weblogic72 ~]# useradd -g weblogic weblogic [root@weblogic72 ~]# passwd weblogic # 更改weblogic用户的密码 [root@weblogic72 ~]# groups weblogic [root@weblogic72 ~]# su - weblogic{/collapse-item}{collapse-item label="3.配置JDK"}####################普通用户配置JDk环境#################### [weblogic@weblogic71 ~]# mkdir softwares [weblogic@weblogic71 ~]# cd softwares/ [weblogic@weblogic71 ~]# tar xf jdk-8u291-linux-x64.tar.gz [weblogic@weblogic71 ~]# /home/weblogic/softwares/jdk1.8.0_291/bin/java -version [weblogic@weblogic71 ~]# vim .bash_profile ··· export JAVA_HOME=/home/weblogic/softwares/jdk1.8.0_291/ export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin ··· [weblogic@weblogic71 ~]# source .bash_profile [weblogic@weblogic72 ~]# java -version java version "1.8.0_291" Java(TM) SE Runtime Environment (build 1.8.0_291-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode) ####################root用户配置JDk环境#################### [root@weblogic72 ~]# vim /etc/profile ··· export JAVA_HOME=/home/weblogic/softwares/jdk1.8.0_291/ export PATH=$PATH:$JAVA_HOME/bin ··· [root@weblogic72 ~]# source /etc/profile [root@weblogic72 ~]# java -version java version "1.8.0_291" Java(TM) SE Runtime Environment (build 1.8.0_291-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode){/collapse-item}{collapse-item label="4.开始安装weblogic"}[weblogic@weblogic72 softwares]# pwd /home/weblogic/softwares [weblogic@weblogic72 softwares]# chmod -R 777 wls1211_generic.jar [weblogic@weblogic72 softwares]# java -jar wls1211_generic.jar -mode=console (可以不加“-mode=console”的控制台文本模式,因为在安装时无法启动图形安装界面时它会自动的进入文本控制台模式的)选择中间件目录,可默认,看个人爱好吧 注册安全更新,一般不需要更新,操作:选择3,回车 更改接受更新方式,操作:输入No,回车确认更改接受更新方式,操作:Yes,回车 接受更新选择确认,直接输入“Next”,回车(此时Receive Security Update:[No]表示不接受安全更新) 选择安装类型(Typical:典型;Custom:自定义),操作:我们选择默认典型安装,输入“Next”,回车(如果选择定制安装,输入“2”,回车) 选择jdk 选择产品安装目录,(一般来说,这一步默认就行(如果要更改的话就选择前面的序号,比如1回车,然后输入安装路径就行),输入“下一步”后回车),操作:Next,回车 安装产品系列列表,直接 Next,开始安装 看到下面信息即安装成功 {/collapse-item}{collapse-item label="5. 创建domain"}# 进安装目录下的 bin 目录下,找 config.sh [weblogic@weblogic72 bin]# pwd /home/weblogic/Oracle/Middleware/wlserver_12.1/common/bin [weblogic@weblogic72 bin]# ll total 112 -rwxr-x--- 1 weblogic weblogic 24283 Dec 9 15:38 commEnv.sh -rwxr-x--- 1 weblogic weblogic 2129 Dec 9 15:38 config_builder.sh -rwxr-x--- 1 weblogic weblogic 2281 Dec 9 15:38 config.sh -rwxr-x--- 1 weblogic weblogic 2586 Dec 9 15:38 pack.sh -rwxr-x--- 1 weblogic weblogic 2150 Dec 9 15:38 setPatchEnv.sh -rwxr-x--- 1 weblogic weblogic 4089 Dec 9 15:38 startDerby.sh -rwxr-x--- 1 weblogic weblogic 4095 Dec 9 15:38 startManagedWebLogic.sh -rwxr-x--- 1 weblogic weblogic 1455 Dec 9 15:38 stopDerby.sh -rwxr-x--- 1 weblogic weblogic 2094 Dec 9 15:38 unpack.sh -rwxr-x--- 1 weblogic weblogic 3305 Dec 9 15:38 upgrade.sh -rwxr-x--- 1 weblogic weblogic 31224 Dec 9 15:38 wlscontrol.sh -rwxr-x--- 1 weblogic weblogic 13854 Dec 9 15:37 wlsifconfig.sh -rwxr-x--- 1 weblogic weblogic 791 Dec 9 15:38 wlst.sh [weblogic@weblogic72 bin]# 执行`./config.sh 接下来傻瓜式往下走就行了,默认就next,其中有个路径需要注意:进入目标域目录选择,操作:输入“Next”,回车(这里选择默认即可,如果要修改,记得输入路径,回车)更改密码确认用户密码输入"Next" 回车域模式配置,操作:输入2,回车(1.开发模式,2生产模式)选择jdk接下来这一步需要注意,不然如果没选,可能出不来配置端口的信息,还需要手动改配置文件:接下来就是配置端口号,默认端口就直接回车,否则选择序号进行修改修改默认端口为7003直接回车即可安装完成{/collapse-item}{collapse-item label="6.编辑启动脚本"}修改JVM堆内存大小堆内存生产环境调优说明 - 设置物理机内存的一半,比如说物理内存是32G,则堆内存应该为设置16G即可; - 当物理内存过大时,推荐配置不得超过32G,比如物理内存为128G,应该最大的堆内存大小设置为32G; [weblogic@weblogic72 bin]# pwd /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/bin [weblogic@weblogic72 bin]# grep Xmx setDomainEnv.sh WLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m" WLS_MEM_ARGS_32BIT="-Xms256m -Xmx512m" WLS_MEM_ARGS_64BIT="-Xms512m -Xmx512m" WLS_MEM_ARGS_32BIT="-Xms512m -Xmx512m" [weblogic@weblogic72 bin]# 修改内核参数[root@weblogic72 ~]# cat > /etc/sysctl.d/weblogic.conf <<EOF vm.max_map_count=262144 EOF [root@weblogic72 ~]# sysctl -p /etc/sysctl.d/weblogic.conf编写启动脚本[root@weblogic72 ~]# cat > /usr/lib/systemd/system/weblogic.service <<EOF [Unit] Description=weblogic server daemon Documentation=https://blog.ayou.space Description=WebLogic Adminserver Service[Service] [Service] Type=simple WorkingDirectory=/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain ExecStart=/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/bin/startWebLogic.sh ExecStop=/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/bin/stopWebLogic.sh User=weblogic Group=weblogic [Install] WantedBy=multi-user.target EOF启动测试systemctl daemon-reload systemctl enable --now weblogic{/collapse-item}{/collapse}二、部署项目{collapse}{collapse-item label="1.下载编译好的war包并上传" open}[weblogic@weblogic72 user_projects]# pwd /home/weblogic/Oracle/Middleware/user_projects [weblogic@weblogic72 user_projects]# ll total 0 drwxr-x--- 3 weblogic weblogic 25 Dec 9 16:25 domains [weblogic@weblogic72 user_projects]# mkdir helloworld [weblogic@weblogic72 user_projects]# ll total 0 drwxr-x--- 3 weblogic weblogic 25 Dec 9 16:25 domains drwxrwxr-x 2 weblogic weblogic 6 Dec 10 13:52 helloworld [weblogic@weblogic72 user_projects]# cd helloworld/ # 上传war包 [weblogic@weblogic72 helloworld]# ll total 4 -rw-r--r-- 1 weblogic weblogic 3388 Dec 10 13:43 hello-world.zip [weblogic@weblogic72 helloworld]# unzip hello-world.zip [weblogic@weblogic72 helloworld]# ll total 8 -rw-rw-r-- 1 weblogic weblogic 2415 Dec 9 18:00 hello-world.war -rw-rw-r-- 1 weblogic weblogic 1624 Dec 10 13:42 hello-world.zip [weblogic@weblogic72 helloworld]# rm -rf hello-world.zip [weblogic@weblogic72 helloworld]# [weblogic@weblogic72 helloworld]# ll total 4 -rw-rw-r-- 1 weblogic weblogic 2415 Dec 9 18:00 hello-world.war [weblogic@weblogic72 helloworld]# {/collapse-item}{collapse-item label="2.部署业务"}点击锁定并编辑点击安装选择war包点击 下一步自定义项目名称点击完成点击保存准备启动业务确认启动服务{/collapse-item}{collapse-item label="3.访问项目"}{/collapse-item}{/collapse}
2023年12月09日
3,131 阅读
2 评论
1,382 点赞
2023-08-25
Nginx搭建本地YUM仓库
环境准备{card-default label="环境准备" width=""}一台服务器 公(10.0.0.61) 内(172.16.1.61)提前安装epel或者使用nginx.org官网仓库并安装Nginx配置Nginx目录索引目录通过yumdownloader将rpm包下载到本地安装createrepo并创建yum仓库{/card-default}{message type="success" content="1、安装Nginx"/}yum install -y nginx{message type="success" content="2、Nginx配置目录索引"/}server { listen 80; server_name _; location / { root /yum; autoindex on; autoindex_exact_size on; autoindex_localtime on; } }{message type="success" content="3、创建目录、修改权限并重启nginx"/}[root@luckly ~]# mkdir /yum/packages/ [root@luckly ~]# touch /yum/test.txt [root@luckly ~]# chown -R nginx.nginx /yum/ [root@luckly ~]# systemctl restart nginx{message type="success" content="4、通过yumdownloader下载rpm包"/}[root@luckly ~]# yum -y install yum-utils # 以httpd为例 [root@luckly ~]# yumdownloader --destdir /yum/packages/ --resolve httpd 指定下载路径 下载依赖{message type="success" content="5、安装createrpo"/}[root@luckly ~]# yum install createrepo –y{message type="success" content="6、创建YUM存储库"/}[root@luckly ~]# chown -R nginx.nginx /yum/packages/ [root@luckly ~]# createrepo /yum/packages/{message type="success" content="7、移动默认的仓库"/}[root@luckly ~]# mv /etc/yum.repos.d/* /opt/{message type="success" content="8、配置新的本地YUM仓库"/}[root@luckly yum.repos.d]# vim /etc/yum.repos.d/local.repo[local] name=local_repo baseurl=http://10.0.0.61/packages/ enabled=1{message type="success" content="8、安装测试"/}[root@luckly ~]# yum install httpd
2023年08月25日
2,356 阅读
3 评论
539 点赞
2023-07-12
Linux常用命令、配置文件及作用
常用命令及作用pwd # 打印路径 ls # 查看目录 常用参数: -l 查看文件或目录的详细信息 cd # 切换路径 touch # 新建文件 mkdir # 新建目录 常用参数: -p 递归创建目录 mv # 移动文件或目录 cp # 拷贝文件或目录 常用参数: - cat # 查看文件中的内容 rm # 删除 常用参数: -r 将目录及以下之档案亦逐一删除; -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认 blkid # 查看硬件设备 mount # 挂载硬件设备 umount # 卸载硬件设备 df # 显示目前在 Linux 系统上的文件系统磁盘使用情况统计 常用参数:-h free # 查看内存使用情况 常用参数: -h 使用人类可读的格式 lscpu # 查看cpu信息 uptime # 查看系统负载 which # 在环境变量$PATH设置的目录里查找符合条件的文件 netstat -nltp # 以数字的形式显示地址和端口号列出以tcp协议有关的服务状态以及建立相关链接的程序名 chmod # 给文件权限 常用参数:-R 递归给目标目录下所有文件及目录相同的权限; r 读权限; w 写权限; x 可执行; + 增加权限; - 取消权限; = 唯一设定权限 firewall-cmd # 管理防火墙的命令 firewall-cmd --zone=public --add-port=80/tcp --permanent # 添加(80)端口 firewall-cmd --zone=public --remove-port=80/tcp --permanent # 删除(80)端口 firewall-cmd --list-all # 列出防火墙所有规则 firewall-cmd --reload # 重新加载防火墙规则 ip addr add 10.0.0.200/24 dev eth0 # 增加一个临时ip ip addr delete 10.0.0.200/24 dev eth0 # 删除一个临时ip head # 默认显示文件的前10行 -n -3显示前三行 tail # 默认显示文件的后10行 # -n -3显示最后三行 # -f 实时查看最新的日志 # -F 实时显示文件的内容 不存在则跟踪 wc # 统计 # -l 统计行数 hostnamectl # 查看系统版本号 uname -r # 查看内核版本 uname -a # 查看内核版本 getenforce # 查看Selinux状态 setenforce # 打开或关闭Selinux 0关闭 1开启 date # 查看系统时间 # +%F-%H-%M-%S 年月时分秒 # -s 更改系统时间 clock # 查看硬件时间 # -w 将系统时间和硬件时间同步 ntpdate ntp1.aliyun.com # 与时间服务器同步 yum repolist # 查看默认仓库 yum clean all # 清除yum缓存 yum list # 查看仓库中所有的包 yum install -y 包名称 # 安装包 yum romove -y 包名称 # 卸载包 rpm -ivh name.rpm # 安装rpm包 ps -axuf # 以树状静态显示进程 top # 以动态来显示进程 kill # 杀死进程 1 重新加载配置文件 9 强制杀死进程 15 终止进程,默认kill使用该信号 nohup 脚本 & # 将进程放到后台持续运行不退出 nice # 指定程序的优先级,语法格式 nice -n 优先级数字 进程名称 last # 目前登录过系统的用户信息 jobs # 查看后台运行任务 ping ip add # 查看IP route -n # 查看网关 ifconfig # 查看IP nslookup # 查看DNS traceroute -n -I # 路由跟踪 tcpdump # 抓包工具 nmap # 扫描端口 iftop # 流量监控 iotop # I/O监控 netstat -tnulp # 查看端口 ss -an|grep tcp # 与netstat几乎相同 telnet # 检查某个主机是否开启某个端口 默认端口23常用系统配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 # 系统网卡配置文件 /etc/hosts # 配置主机和IP的对应关系 /etc/hostname # 掌握配置临时+永久的主机名称 /etc/resolv.conf # DNS配置文件 配置方法 /etc/rc.local # 开机自动执行的命令所在地 /etc/fstab # 开机自动挂载硬件 /etc/inittab # 运行级别配置文件 /etc/profile # 永久存放系统变量的文件 /etc/issue /etc/issue.net # 开机时显示在登录界面上的两行信息 /etc/motd # 开机自动显示的字符串 /etc/redhat-release # 查看系统版本号 /etc/selinux/config # Selinux配置文件
2023年07月12日
1,398 阅读
0 评论
267 点赞
2023-07-07
Linux必会基础命令
1. pwd 显示当前所在的路径 print working directory语法结构: [root@luckly ~]# pwd # 回车 /root2. cd 切换目录 change directorycd 回到家目录 cd ~ 回到家目录 cd /root 回到家目录 cd - 返回到上一次所在的路径 cd .. 回到上一级目录 cd . 表示当前的目录 语法结构: 相对路径进入目录: [root@luckly ~]# cd / [root@luckly /]# cd etc [root@luckly etc]# cd sysconfig/ [root@luckly sysconfig]# cd network-scripts/ [root@luckly network-scripts]# pwd /etc/sysconfig/network-scripts [root@luckly network-scripts]# 使用绝对路径进入目录: [root@luckly network-scripts]# cd # cd直接回到皇宫 [root@luckly ~]# [root@luckly ~]# cd /etc/sysconfig/network-scripts/ [root@luckly network-scripts]# pwd /etc/sysconfig/network-scripts [root@luckly ~]# cd - # 回到上一次所在的路径 /etc/sysconfig/network-scripts [root@luckly network-scripts]# pwd /etc/sysconfig/network-scripts # cd ~ 回到家目录 [root@luckly network-scripts]# cd ~ [root@luckly ~]# # cd /root 回到家目录 [root@luckly network-scripts]# cd /root/ [root@luckly ~]# pwd /root # 回到上一级目录 [root@luckly network-scripts]# cd .. [root@luckly sysconfig]# pwd /etc/sysconfig # 回到上二级目录 [root@luckly sysconfig]# cd ../.. [root@luckly /]# pwd / # 点表示当前所在的目录 [root@luckly ~]# cd . [root@luckly ~]#3.ls 查看文件或目录参数选项: -l 显示文件或目录的详细信息 -d 只查看目录本身的详细信息 语法结构: # 查看1.txt是否存在 [root@luckly ~]# ls 1.txt 1.txt [root@luckly ~]# ls 2.txt ls: cannot access 2.txt: No such file or directory # 显示当前目录的所有的文件 [root@luckly ~]# ls 1.txt hosts luckly # 指定查看/tmp目录下有哪些文件 [root@luckly ~]# ls /tmp/ ks-script-zVRXqX vmware-root_848-2697663887 vmware-root_800-2999657415 yum.log # 查看/目录和/tmp目录下有哪些文件 [root@luckly ~]# ls / /tmp/ /: bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr /tmp/: ks-script-zVRXqX vmware-root_848-2697663887 vmware-root_800-2999657415 yum.log # ls -l 查看详细信息 [root@luckly ~]# ls -l total 4 -rw-r--r--. 1 root root 0 Jul 3 11:50 1.txt -rw-r--r--. 1 root root 158 Jul 3 16:33 hosts drwxr-xr-x. 2 root root 6 Jul 3 16:41 luckly # 执行ll命令相当于执行 ls -l命令 [root@luckly ~]# ll total 4 -rw-r--r--. 1 root root 0 Jul 3 11:50 1.txt -rw-r--r--. 1 root root 158 Jul 3 16:33 hosts drwxr-xr-x. 2 root root 6 Jul 3 16:41 luckly [root@luckly ~]# ll /tmp/ total 8 -rwx------. 1 root root 836 Jun 29 17:51 ks-script-zVRXqX drwx------. 2 root root 6 Jul 3 10:45 vmware-root_800-2999657415 drwx------. 2 root root 6 Jul 3 10:44 vmware-root_846-2697139606 drwx------. 2 root root 6 Jun 30 09:12 vmware-root_848-2697663887 -rw-------. 1 root root 0 Jun 29 17:44 yum.log [root@luckly ~]# ll 1.txt -rw-r--r--. 1 root root 0 Jul 3 11:50 1.txt [root@luckly ~]# ll 1.txt hosts -rw-r--r--. 1 root root 0 Jul 3 11:50 1.txt -rw-r--r--. 1 root root 158 Jul 3 16:33 hosts4.touch 创建普通文件 摸(如果文件存在则修改文件的时间)时间和时间戳的区别 语法结构: 相对路径 touch file1 touch file1 file2 绝对路径 touch /tmp/file1 touch /tmp/file2 /tmp/file3 [root@luckly ~]# ll total 0案例1:创建一个文件[root@luckly ~]# touch 1.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 3 17:06 1.txt案例2: 创建多个文件[root@luckly ~]# touch 2.txt 3.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 3 17:06 1.txt -rw-r--r--. 1 root root 0 Jul 3 17:06 2.txt -rw-r--r--. 1 root root 0 Jul 3 17:06 3.txt案例3: 在/opt目录下创建test.txt相对路径: [root@luckly ~]# cd /opt/ [root@luckly opt]# ll total 0 [root@luckly opt]# touch test.txt [root@luckly opt]# ll total 0 -rw-r--r--. 1 root root 0 Jul 3 17:08 test.txt 绝对路径: [root@luckly ~]# touch /opt/1.txt [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 3 17:09 1.txt -rw-r--r--. 1 root root 0 Jul 3 17:08 test.txt案例4:在/opt目录下创建a.txt和b.txt相对路径: [root@luckly ~]# cd /opt/ [root@luckly opt]# ll total 0 -rw-r--r--. 1 root root 0 Jul 3 17:09 1.txt -rw-r--r--. 1 root root 0 Jul 3 17:08 test.txt [root@luckly opt]# touch a.txt b.txt [root@luckly opt]# ll total 0 -rw-r--r--. 1 root root 0 Jul 3 17:09 1.txt -rw-r--r--. 1 root root 0 Jul 3 17:10 a.txt -rw-r--r--. 1 root root 0 Jul 3 17:10 b.txt 绝对路径: 错误的创建方式: [root@luckly ~]# ll /opt/ total 0 [root@luckly ~]# touch /opt/a.txt b.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 3 17:06 1.txt -rw-r--r--. 1 root root 0 Jul 3 17:06 2.txt -rw-r--r--. 1 root root 0 Jul 3 17:06 3.txt -rw-r--r--. 1 root root 0 Jul 3 17:11 b.txt [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 3 17:11 a.txt --------------------我是一条快乐的分割线-------------------- 正确的创建方式: [root@luckly ~]# touch /opt/a.txt /opt/b.txt [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 3 17:12 a.txt -rw-r--r--. 1 root root 0 Jul 3 17:12 b.txt --------------------我是一条快乐的分割线-------------------- 扩展: 序列 /opt下创建1.txt 2.txt 3.txt [root@luckly ~]# touch /opt/{1..3}.txt [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 3 17:13 1.txt -rw-r--r--. 1 root root 0 Jul 3 17:13 2.txt -rw-r--r--. 1 root root 0 Jul 3 17:13 3.txt案例5: 在/opt下和/tmp下同时创建luckly.txt[root@luckly ~]# touch /opt/luckly.txt /tmp/luckly.txt [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 3 17:15 luckly.txt [root@luckly ~]# ll /tmp/ total 0 -rw-r--r--. 1 root root 0 Jul 3 17:15 luckly.txt案例6: 在上一级创建一个test.txt[root@luckly tmp]# pwd /tmp [root@luckly tmp]# touch /test.txt [root@luckly tmp]# cd / [root@luckly /]# touch test.txt 使用..上一级方式 [root@luckly tmp]# touch ../test.txt5.mkdir 创建目录语法格式: mkdir 目录名称 # 创建单个目录 mkdir test1 test2 # 创建多个目录 mkdir /opt/test # 指定目录下创建目录 mkdir /opt/test1 /opt/test2 # 在相同目录下创建多个文件 mkdir /opt/test1 /tmp/test2 # 在不同目录下创建目录 #在/opt/test/hehe下创建hehe目录 mkdir /opt/test/hehe # test目录必须存在案例1:在当前目录下创建luckly目录[root@luckly ~]# mkdir luckly [root@luckly ~]# ll total 0 drwxr-xr-x. 2 root root 6 Jul 4 10:03 luckly [root@luckly ~]# mkdir luckly mkdir: cannot create directory ‘luckly’: File exists案例2:在当前创建多个目录[root@luckly ~]# mkdir test1 test2 test3 [root@luckly ~]# ll total 0 drwxr-xr-x. 2 root root 6 Jul 4 10:03 luckly drwxr-xr-x. 2 root root 6 Jul 4 10:04 test1 drwxr-xr-x. 2 root root 6 Jul 4 10:04 test2 drwxr-xr-x. 2 root root 6 Jul 4 10:04 test3案例3:在指定目录下创建多个目录# 在/opt目录下创建luckly和test目录 [root@luckly ~]# mkdir /opt/luckly /opt/test [root@luckly ~]# ll /opt/ total 0 drwxr-xr-x. 2 root root 6 Jul 4 10:13 luckly drwxr-xr-x. 2 root root 6 Jul 4 10:13 test案例4:在不同目录下创建不同目录# 在/opt目录和/tmp目录下创建luckly2 [root@luckly ~]# mkdir /opt/luckly2 /tmp/luckly2 [root@luckly ~]# ll /opt/ total 0 drwxr-xr-x. 2 root root 6 Jul 4 10:15 luckly2 [root@luckly ~]# ll /tmp/ total 0 drwxr-xr-x. 2 root root 6 Jul 4 10:15 luckly2案例5:递归创建多级目录# 在当前目录下创建test1/test2/test3/luckly -p #递归创建目录,如果目录存在则不提示文件已存在,如果目录不存在则创建 [root@luckly ~]# mkdir -p test1/test2/test3/luckly [root@luckly ~]# ll total 0 drwxr-xr-x. 3 root root 19 Jul 4 10:16 test1 [root@luckly ~]# ll test1/ total 0 drwxr-xr-x. 3 root root 19 Jul 4 10:16 test2 [root@luckly ~]# ll test1/test2/ total 0 drwxr-xr-x. 3 root root 20 Jul 4 10:16 test3 [root@luckly ~]# ll test1/test2/test3/ total 0 drwxr-xr-x. 2 root root 6 Jul 4 10:16 luckly6.cat 查看文件内容语法结构: 命令参数: -n # 显示行号 cat 文件名 # 相对路径 cat /etc/hosts # 绝对路径 cat file1 file2 # 查看多个文件的内容案例1:查看/etc/hosts文件内容[root@luckly ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6案例2:查看多个文件内容echo 11 > test.txt # 将11字符串输入到test.txt中 echo 22 > luckly.txt # 将22字符串输入到oluckly.txt中 [root@luckly ~]# cat test.txt 11 [root@luckly ~]# cat luckly.txt 22 [root@luckly ~]# cat test.txt luckly.txt 11 22案例3:-n 显示行号[root@luckly ~]# cat -n /etc/hosts 1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6案例4: cat 将内容写道文件中(扩展)# 将内容写入到文件中 [root@luckly ~]# cat>1.txt<<EOF > 1 > 2 > hehe > EOF [root@luckly ~]# cat 1.txt 1 2 hehe [root@luckly ~]# ll total 12 -rw-r--r--. 1 root root 9 Jul 4 11:48 1.txt # 扩展: 文件合并 [root@luckly ~]# echo 11 > 1.txt [root@luckly ~]# echo 22 > 2.txt [root@luckly ~]# cat 1.txt 11 [root@luckly ~]# cat 2.txt 22 [root@luckly ~]# cat 1.txt 2.txt > all.txt [root@luckly ~]# cat all.txt 11 22 [root@luckly ~]# ll total 12 -rw-r--r--. 1 root root 3 Jul 4 11:52 1.txt -rw-r--r--. 1 root root 3 Jul 4 11:52 2.txt -rw-r--r--. 1 root root 6 Jul 4 11:52 all.txt7.cp 复制文件语法格式: cp 源文件 目标位置 cp /etc/hosts 当前 cp /etc/hosts /opt/ 复制到指定位置 cp /etc/hosts host.bak 改名 cp /etc/hosts /opt/hosts.txt 改名案例1:将当前位置的1.txt复制到/opt目录下[root@luckly ~]# touch 1.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 12:01 1.txt # 清空/opt目录下所有的文件 [root@luckly ~]# rm -rf /opt/* [root@luckly ~]# ll /opt/ total 0 [root@luckly ~]# cp 1.txt /opt/ [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 12:01 1.txt [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 4 12:02 1.txt # 如果目标文件存在则提示是否覆盖? [root@luckly ~]# cp 1.txt /opt/ cp: overwrite ‘/opt/1.txt’? 输入y或者n y为覆盖 n为不拷贝案例2:拷贝多个文件到/opt目录[root@luckly ~]# touch test.txt luckly.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 12:01 1.txt -rw-r--r--. 1 root root 0 Jul 4 12:03 luckly.txt -rw-r--r--. 1 root root 0 Jul 4 12:03 test.txt # 注意: 拷贝多个文件最后的必须为目录 [root@luckly ~]# cp luckly.txt test.txt /opt/1.txt cp: target ‘/opt/1.txt’ is not a directory 目标1.txt不是一个目录 [root@luckly ~]# cp luckly.txt test.txt /opt/ [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 4 12:05 1.txt -rw-r--r--. 1 root root 0 Jul 4 12:06 luckly.txt -rw-r--r--. 1 root root 0 Jul 4 12:06 test.txt # 如果想覆盖目标文件且不提示则加\ [root@luckly ~]# cp 1.txt luckly.txt test.txt /opt/ cp: overwrite ‘/opt/1.txt’? cp: overwrite ‘/opt/luckly.txt’? cp: overwrite ‘/opt/test.txt’? [root@luckly ~]# \cp 1.txt luckly.txt test.txt /opt/ # 在LInux系统中系统为了保证数据安全在危险的命令执行的时候增加了-i的参数 rm -i mv -i cp -i案例3:拷贝不同目录下的文件到/opt目录# 复制/etc/hsots luckly.txt /opt/1.txt 到/tmp目录下 清空tmp目录 [root@luckly ~]# rm -rf /tmp/* [root@luckly ~]# [root@luckly ~]# cp /etc/hosts luckly.txt /opt/1.txt /tmp/ [root@luckly ~]# ll /tmp/ total 4 -rw-r--r--. 1 root root 0 Jul 4 12:15 1.txt -rw-r--r--. 1 root root 158 Jul 4 12:15 hosts -rw-r--r--. 1 root root 0 Jul 4 12:15 luckly.txt案例4:改名# 将当前的luckly.txt 改名为 2.txt [root@luckly ~]# cp 1.txt 2.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 12:01 1.txt -rw-r--r--. 1 root root 0 Jul 4 12:16 2.txt # 将当前目录的1.txt拷贝到/tmp目录改名为1.txt.bak [root@luckly ~]# cp 1.txt /tmp/1.txt.bak [root@luckly ~]# ll /tmp/ total 4 -rw-r--r--. 1 root root 0 Jul 4 12:15 1.txt -rw-r--r--. 1 root root 0 Jul 4 12:18 1.txt.bak # 复制/opt目录下的luckly.txt 到/opt目录改名为luckly.bak 相对路径: [root@luckly ~]# cd /opt/ [root@luckly opt]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 12:13 1.txt -rw-r--r--. 1 root root 0 Jul 4 12:07 luckly.txt -rw-r--r--. 1 root root 0 Jul 4 12:07 test.txt [root@luckly opt]# cp luckly.txt luckly.bak [root@luckly opt]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 12:13 1.txt -rw-r--r--. 1 root root 0 Jul 4 12:19 luckly.bak -rw-r--r--. 1 root root 0 Jul 4 12:07 luckly.txt 绝对路径: [root@luckly ~]# cp /opt/1.txt /opt/1.bak案例5:将/etc/hosts拷贝到当前目录[root@luckly ~]# rm -rf * [root@luckly ~]# cp /etc/hosts . [root@luckly ~]# ll total 4 -rw-r--r--. 1 root root 158 Jul 4 12:21 hosts [root@luckly ~]# cp /etc/passwd /opt/luckly.txt . [root@luckly ~]# ll total 8 -rw-r--r--. 1 root root 158 Jul 4 12:21 hosts -rw-r--r--. 1 root root 0 Jul 4 12:22 luckly.txt -rw-r--r--. 1 root root 981 Jul 4 12:22 passwd # 拷贝源文件必须存在 [root@luckly ~]# cp /tmp/1111.txt . cp: cannot stat ‘/tmp/1111.txt’: No such file or directory案例6:拷贝目录命令参数: -r # 递归 # 拷贝目录及目录下所有的文件到当前 [root@luckly ~]# rm -rf * [root@luckly ~]# rm -rf /opt/* [root@luckly ~]# ll /opt/ total 0 # cp无法直接操作目录 必须使用参数 [root@luckly ~]# cp /etc . cp: omitting directory ‘/etc’ [root@luckly ~]# cp -r /etc . [root@luckly ~]# ll total 12 drwxr-xr-x. 79 root root 8192 Jul 4 12:25 etc # 拷贝多个目录 [root@luckly ~]# cp -r /etc /opt/luckly . [root@luckly ~]# ll total 12 drwxr-xr-x. 79 root root 8192 Jul 4 12:28 etc drwxr-xr-x. 2 root root 6 Jul 4 12:28 luckly8.mv 移动文件语法结构: mv 源文件 目标位置 # 移动单个文件 mv file1 file2 目标位置 # 移动多个文件 mv luckly.txt luckly.bak # 改名 mv dir 目标位置 案例1.将当前1.txt移动到/opt目录下[root@luckly ~]# touch 1.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.txt # 将当前的1.txt移动到/opt目录下 [root@luckly ~]# mv 1.txt /opt/ [root@luckly ~]# ll total 0 [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.txt drwxr-xr-x. 2 root root 6 Jul 4 12:28 luckly [root@luckly ~]# # 将/opt/1.txt移动到当前目录 [root@luckly ~]# mv /opt/1.txt ./ [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.txt案例2:移动多个文件[root@luckly ~]# touch 2.txt 3.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 2.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 3.txt [root@luckly ~]# rm -rf /tmp/* [root@luckly ~]# mv 1.txt 2.txt 3.txt /tmp/ [root@luckly ~]# ll /tmp/ total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 2.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 3.txt [root@luckly ~]# ll /tmp/ total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 2.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 3.txt # 将/tmp目录下所有的文件移动到当前目录 [root@luckly ~]# mv /tmp/* . [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 2.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 3.txt案例3:修改文件名称# 将1.txt修改为1.bak [root@luckly ~]# mv 1.txt 1.bak [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.bak -rw-r--r--. 1 root root 0 Jul 4 15:22 2.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 3.txt # 将1.bak 移动到/opt/改名称为1.log [root@luckly ~]# mv 1.bak /opt/1.log [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.log案例4:移动目录[root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.log drwxr-xr-x. 2 root root 6 Jul 4 12:28 luckly [root@luckly ~]# ll /opt/luckly/ total 0 [root@luckly ~]# touch /opt/luckly/2.txt [root@luckly ~]# ll /opt/luckly/ total 0 -rw-r--r--. 1 root root 0 Jul 4 15:30 2.txt # 移动目录luckly到当前目录下 [root@luckly ~]# mv /opt/luckly/ . [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:22 2.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 3.txt drwxr-xr-x. 2 root root 19 Jul 4 15:30 luckly [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.log drwxr-xr-x. 2 root root 24 Jul 4 15:32 test # 将test目录移动到当前目录命名为test1 [root@luckly ~]# mv /opt/test/ ./test1 [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:22 2.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 3.txt drwxr-xr-x. 2 root root 19 Jul 4 15:30 luckly drwxr-xr-x. 2 root root 24 Jul 4 15:32 test19.rm 删除文件语法结构: 命令参数: -f参数 强制删除不提示 force强制的意思 rm file # 删除文件 rm dir # 删除目录 rm file1 file2 .. # 删除多个文件 rm dir1 dir2 .. # 删除多个目录案例1:删除1.txt[root@luckly ~]# touch 1.txt 会提示用户是否删除 y删除 n不删除 [root@luckly ~]# rm 1.txt rm: remove regular empty file ‘1.txt’? # 在命令前加\ eg.(\rm)取消别名还原本意 [root@luckly ~]# \rm 1.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:22 2.txt -rw-r--r--. 1 root root 0 Jul 4 15:22 3.txt drwxr-xr-x. 2 root root 19 Jul 4 15:30 luckly drwxr-xr-x. 2 root root 24 Jul 4 15:32 test1案例2:删除多个文件# 强制删除2.txt 3.txt [root@luckly ~]# rm -f 2.txt 3.txt [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:47 1.txt drwxr-xr-x. 2 root root 19 Jul 4 15:30 luckly drwxr-xr-x. 2 root root 24 Jul 4 15:32 test1 [root@luckly ~]# ll total 0 -rw-r--r--. 1 root root 0 Jul 4 15:47 1.txt drwxr-xr-x. 2 root root 19 Jul 4 15:30 luckly drwxr-xr-x. 2 root root 24 Jul 4 15:32 test1 # 删除/opt下的1.log和当前路径的1.txt [root@luckly ~]# ll /opt/ total 0 -rw-r--r--. 1 root root 0 Jul 4 15:18 1.log [root@luckly ~]# rm -f 1.txt /opt/1.log [root@luckly ~]# ll total 0 drwxr-xr-x. 2 root root 19 Jul 4 15:30 luckly drwxr-xr-x. 2 root root 24 Jul 4 15:32 test1 [root@luckly ~]# ll /opt/ total 0案例3:删除目录(在工作中尽量使用mv替代rm)# rm默认无法直接操作目录 需要参数配合 [root@luckly ~]# rm test1 rm: cannot remove ‘test1’: Is a directory [root@luckly ~]# rm -rf test1 [root@luckly ~]# ll total 0 drwxr-xr-x. 2 root root 19 Jul 4 15:30 luckly案例4:删除多个文件[root@luckly ~]# mkdir luckly test luckly1 [root@luckly ~]# ll total 0 drwxr-xr-x. 2 root root 6 Jul 4 16:06 luckly drwxr-xr-x. 2 root root 6 Jul 4 16:06 luckly1 drwxr-xr-x. 2 root root 6 Jul 4 16:06 test [root@luckly ~]# rm -rf luckly luckly1 test [root@luckly ~]# ll total 0
2023年07月07日
731 阅读
0 评论
168 点赞
2022-10-20
非常实用的常用Linux运维Shell脚本
运维可以根据实际情况进行修改 {message type="success" content="本文章长期更新常用脚本"/}{collapse}{collapse-item label="mysql备份脚本" open}#!/bin/bash set -e USER="backup" PASSWORD="backup" # 数据库数据目录 # DATA_DIR="/data/mysql" BIN_INDEX=$DATA_DIR"/mysql-bin.index" # 备份目录 # BACKUP_DIR="/data/backup/mysql" BACKUP_LOG="/var/log/mysql/backup.log" DATE=`date +"%Y%m%d"` TIME=`date +"%Y%m%d%H"` LOG_TIME=`date +"%Y-%m-%d %H:%M:%S"` DELETE_BINLOG_TIME="7 day" INCREMENT_INTERVAL="3 hour" note() { printf "[$LOG_TIME] note: $*\n" >> $BACKUP_LOG; } warning() { printf "[$LOG_TIME] warning: $*\n" >> $BACKUP_LOG; } error() { printf "[$LOG_TIME] error: $*\n" >> $BACKUP_LOG; exit 1; } full_backup() { local dbs=`ls -l $DATA_DIR | grep "^d" | awk -F " " '{print $9}'` for db in $dbs do local backup_dir=$BACKUP_DIR"/full/"$db local filename=$db"."$DATE local backup_file=$backup_dir"/"$filename".sql" if [ ! -d $backup_dir ] then mkdir -p $backup_dir || { error "创建数据库 $db 全量备份目录 $backup_dir 失败"; continue; } note "数据库 $db 全量备份目录 $backup_dir 不存在,创建完成"; fi note "full backup $db start ..." mysqldump --user=${USER} --password=${PASSWORD} --flush-logs --skip-lock-tables --quick $db > $backup_file || { warning "数据库 $db 备份失败"; continue; } cd $backup_dir tar -cPzf $filename".tar.gz" $filename".sql" rm -f $backup_file chown -fR mysql:mysql $backup_dir note "数据库 $db 备份成功"; note "full backup $db end." done } increment_backup() { local StartTime=`date "-d $INCREMENT_INTERVAL ago" +"%Y-%m-%d %H:%M:%S"` local DELETE_BINLOG_END_TIME=`date "-d $DELETE_BINLOG_TIME ago" +"%Y-%m-%d %H:%M:%S"` local dbs=`ls -l $DATA_DIR | grep "^d" | awk -F " " '{print $9}'` mysql -u$USER -p$PASSWORD -e "purge master logs before '$DELETE_BINLOG_END_TIME'" && note "delete $DELETE_BINLOG_TIME days before log"; filename=`cat $BIN_INDEX | awk -F "/" '{print $2}'` for i in $filename do for db in $dbs do local backup_dir=$BACKUP_DIR"/increment/"$db local filename=$db"."$TIME local backup_file=$backup_dir"/"$filename".sql" if [ ! -d $backup_dir ] then mkdir -p $backup_dir || { error "创建数据库 $db 增量备份目录 $backup_dir 失败"; continue; } note "数据库 $db 增量备份目录 $backup_dir 不存在,创建完成"; fi note "increment backup $db form time $StartTime start ..." mysqlbinlog -d $db --start-datetime="$StartTime" $DATA_DIR/$i >> $backup_file || { warning "数据库 $db 备份失败"; continue; } note "increment backup $db end." done done for db in $dbs do local backup_dir=$BACKUP_DIR"/increment/"$db local filename=$db"."$TIME local backup_file=$backup_dir"/"$filename".sql" cd $backup_dir tar -cPzf $filename".tar.gz" $filename".sql" rm -f $backup_file note "数据库 $db 备份成功"; done } case "$1" in full) full_backup ;; increment) increment_backup ;; *) exit 2 ;; esac exit 1{/collapse-item}{collapse-item label="Dos 攻击防范(自动屏蔽攻击 IP)"}#!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) LOG_FILE=/usr/local/nginx/logs/demo2.access.log ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}') for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log fi done{/collapse-item}{collapse-item label="Linux 系统发送告警脚本"}# yum install mailx # vi /etc/mail.rc set from=baojingtongzhi@163.com smtp=smtp.163.com set smtp-auth-user=baojingtongzhi@163.com smtp-auth-password=******* set smtp-auth=login{/collapse-item}{collapse-item label="MySQL 数据库备份单循环"}#!/bin/bash DATE=$(date +%F_%H-%M-%S) HOST=localhost USER=backup PASS=123.com BACKUP_DIR=/data/db_backup DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys") for DB in $DB_LIST; do BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then echo "$BACKUP_NAME 备份失败!" fi done{/collapse-item}{collapse-item label="MySQL 数据库备份多循环"}#!/bin/bash DATE=$(date +%F_%H-%M-%S) HOST=localhost USER=backup PASS=123.com BACKUP_DIR=/data/db_backup DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys") for DB in $DB_LIST; do BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE} [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null) for TABLE in $TABLE_LIST; do BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then echo "$BACKUP_NAME 备份失败!" fi done done{/collapse-item}{collapse-item label="Nginx 访问访问日志按天切割"}#!/bin/bash LOG_DIR=/usr/local/nginx/logs YESTERDAY_TIME=$(date -d "yesterday" +%F) LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m") LOG_FILE_LIST="default.access.log" for LOG_FILE in $LOG_FILE_LIST; do [ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME} done kill -USR1 $(cat /var/run/nginx.pid){/collapse-item}{collapse-item label="Nginx 访问日志分析脚本"}#!/bin/bash # 日志格式: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" LOG_FILE=$1 echo "统计访问最多的10个IP" awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print v,a[v]}' $LOG_FILE |sort -k2 -nr |head -10 echo "----------------------" echo "统计时间段访问最多的IP" awk '$4>="[01/Dec/2018:13:20:25" && $4<="[27/Nov/2018:16:20:49"{a[$1]++}END{for(v in a)print v,a[v]}' $LOG_FILE |sort -k2 -nr|head -10 echo "----------------------" echo "统计访问最多的10个页面" awk '{a[$7]++}END{print "PV:",length(a);for(v in a){if(a[v]>10)print v,a[v]}}' $LOG_FILE |sort -k2 -nr echo "----------------------" echo "统计访问页面状态码数量" awk '{a[$7" "$9]++}END{for(v in a){if(a[v]>5)print v,a[v]}}'{/collapse-item}{collapse-item label="查看网卡实时流量脚本"}#!/bin/bash NIC=$1 echo -e " In ------ Out" while true; do OLD_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev) OLD_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev) sleep 1 NEW_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev) NEW_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev) IN=$(printf "%.1f%s" "$((($NEW_IN-$OLD_IN)/1024))" "KB/s") OUT=$(printf "%.1f%s" "$((($NEW_OUT-$OLD_OUT)/1024))" "KB/s") echo "$IN $OUT" sleep 1 done{/collapse-item}{collapse-item label="服务器系统配置初始化脚本"}#/bin/bash # 设置时区并同步时间 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime if ! crontab -l |grep ntpdate &>/dev/null ; then (echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab fi # 禁用selinux sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config # 关闭防火墙 if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then systemctl stop firewalld systemctl disable firewalld elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; then service iptables stop chkconfig iptables off fi # 历史命令显示操作时间 if ! grep HISTTIMEFORMAT /etc/bashrc; then echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc fi # SSH超时时间 if ! grep "TMOUT=600" /etc/profile &>/dev/null; then echo "export TMOUT=600" >> /etc/profile fi # 禁止root远程登录 sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config # 禁止定时任务向发送邮件 sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab # 设置最大打开文件数 if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then cat >> /etc/security/limits.conf << EOF * soft nofile 65535 * hard nofile 65535 EOF fi # 系统内核优化 cat >> /etc/sysctl.conf << EOF net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_tw_buckets = 20480 net.ipv4.tcp_max_syn_backlog = 20480 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_fin_timeout = 20 EOF # 减少SWAP使用 echo "0" > /proc/sys/vm/swappiness # 安装系统性能分析工具及其他 yum install gcc make autoconf vim sysstat net-tools iostat if{/collapse-item}{collapse-item label="监控 100 台服务器磁盘利用率脚本"}#!/bin/bash HOST_INFO=host.info for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); do USER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO) PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO) TMP_FILE=/tmp/disk.tmp ssh -p $PORT $USER@$IP 'df -h' > $TMP_FILE USE_RATE_LIST=$(awk 'BEGIN{OFS="="}/^\/dev/{print $NF,int($5)}' $TMP_FILE) for USE_RATE in $USE_RATE_LIST; do PART_NAME=${USE_RATE%=*} USE_RATE=${USE_RATE#*=} if [ $USE_RATE -ge 80 ]; then echo "Warning: $PART_NAME Partition usage $USE_RATE%!" fi done done{/collapse-item}{collapse-item label="mysqldump备份所有库脚本"}#!/bin/bash date=`date +%Y_%m_%d'___'%H_%M_%S` ####################################### project_path=$(cd `dirname $0`; pwd) ####################################### start_time=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"` u="puser" p="!O2222n" ip="127.0.0.1" port="3306" pwd="/opt/Myslq_Backup" mysql -u$u -p$p "-e show databases;" |awk '{print $1}' |egrep -v -e "Database" -e "performance_schema" -e "information_schema" > $pwd/Database_text for i in `(cat $pwd/Database_text)` do mysqldump -u$u -p$p $i > $pwd/${i}_$date.sql gzip $pwd/${i}_$date.sql done find $pwd/ -mtime +30 -name "*.gz" -exec rm -rf {} \; finish_time=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"` duration=$(($(($(date +%s -d "$finish_time")-$(date +%s -d "$start_time"))))) echo -e "\033[41m 本次执行脚本耗时: $duration秒 \033[0m"{/collapse-item}{/collapse}
2022年10月20日
1,347 阅读
0 评论
261 点赞
1
2
首页
复制
搜索
前进
后退
重载网页
和我当邻居