Author Archives: Node

CentOS Linux 7.3 1611 x86 64 iso 官方原版镜像下载

适用于 x86_64 架构:
CentOS-7-x86_64-DVD-1611.iso                       05-Dec-2016 13:57      4G
CentOS-7-x86_64-DVD-1611.torrent                   08-Dec-2016 14:25    164K
CentOS-7-x86_64-Everything-1611.iso                05-Dec-2016 13:57      8G
CentOS-7-x86_64-Everything-1611.torrent            08-Dec-2016 14:25    309K
CentOS-7-x86_64-LiveGNOME-1611.iso                 05-Dec-2016 14:11      1G
CentOS-7-x86_64-LiveGNOME-1611.torrent             08-Dec-2016 14:25     47K
CentOS-7-x86_64-LiveKDE-1611.iso                   05-Dec-2016 14:30      2G
CentOS-7-x86_64-LiveKDE-1611.torrent               08-Dec-2016 14:25     67K
CentOS-7-x86_64-Minimal-1611.iso                   05-Dec-2016 23:44    680M
CentOS-7-x86_64-Minimal-1611.torrent               08-Dec-2016 14:25     27K
CentOS-7-x86_64-NetInstall-1611.iso                05-Dec-2016 13:20    377M
CentOS-7-x86_64-NetInstall-1611.torrent            08-Dec-2016 14:25     15K
版本说明:

DVD:        # 标准安装镜像,一般常用。
Minimal:    # 最小安装镜像,自带的软件最少。
Everything: # 标准的基础上集成所有软件,镜像最大。
NetInstall: # 网络安装镜像,包小,但需联网才能安装。
更多版本请参阅《下载 CentOS ISO》。

CentOS Linux 7.2 1511 x86 64 iso 官方原版镜像下载

适用于 x86_64 架构:
CentOS-7-x86_64-DVD-1511.iso                       09-Dec-2015 23:15      4G
CentOS-7-x86_64-DVD-1511.torrent                   14-Dec-2015 14:00    162K
CentOS-7-x86_64-Everything-1511.iso                09-Dec-2015 22:39      7G
CentOS-7-x86_64-Everything-1511.torrent            14-Dec-2015 14:00    290K
CentOS-7-x86_64-LiveGNOME-1511.iso                 10-Dec-2015 12:09      1G
CentOS-7-x86_64-LiveGNOME-1511.torrent             14-Dec-2015 14:00     46K
CentOS-7-x86_64-LiveKDE-1511.iso                   10-Dec-2015 12:09      2G
CentOS-7-x86_64-LiveKDE-1511.torrent               14-Dec-2015 14:00     67K
CentOS-7-x86_64-Minimal-1511.iso                   09-Dec-2015 23:03    603M
CentOS-7-x86_64-Minimal-1511.torrent               14-Dec-2015 14:00     24K
CentOS-7-x86_64-NetInstall-1511.iso                09-Dec-2015 22:34    376M
CentOS-7-x86_64-NetInstall-1511.torrent            14-Dec-2015 14:00     15K
版本说明:

DVD:        # 标准安装镜像,一般常用。
Minimal:    # 最小安装镜像,自带的软件最少。
Everything: # 标准的基础上集成所有软件,镜像最大。
NetInstall: # 网络安装镜像,包小,但需联网才能安装。
更多版本请参阅《下载 CentOS ISO》。

CentOS Linux 7.1 1503 x86 64 iso 官方原版镜像下载

适用于 x86_64 架构:
CentOS-7-x86_64-DVD-1503-01.iso                    01-Apr-2015 00:05      4G
CentOS-7-x86_64-DVD-1503-01.torrent                01-Apr-2015 02:04    161K
CentOS-7-x86_64-Everything-1503-01.iso             01-Apr-2015 00:26      7G
CentOS-7-x86_64-Everything-1503-01.torrent         01-Apr-2015 02:04    283K
CentOS-7-x86_64-LiveCD-1503.iso                    31-Mar-2015 09:13    696M
CentOS-7-x86_64-LiveCD-1503.torrent                31-Mar-2015 13:42     28K
CentOS-7-x86_64-LiveGNOME-1503.iso                 31-Mar-2015 11:10      1G
CentOS-7-x86_64-LiveGNOME-1503.torrent             31-Mar-2015 13:42     43K
CentOS-7-x86_64-LiveKDE-1503.iso                   31-Mar-2015 11:11      1G
CentOS-7-x86_64-LiveKDE-1503.torrent               31-Mar-2015 13:42     49K
CentOS-7-x86_64-Minimal-1503-01.iso                01-Apr-2015 00:08    636M
CentOS-7-x86_64-Minimal-1503-01.torrent            01-Apr-2015 02:04     26K
CentOS-7-x86_64-NetInstall-1503.iso                27-Mar-2015 22:34    360M
CentOS-7-x86_64-NetInstall-1503.torrent            31-Mar-2015 13:42     15K

版本说明:

DVD:        # 标准安装镜像,一般常用。
Minimal:    # 最小安装镜像,自带的软件最少。
Everything: # 标准的基础上集成所有软件,镜像最大。
NetInstall: # 网络安装镜像,包小,但需联网才能安装。
更多版本请参阅《下载 CentOS ISO》。

CentOS Linux 7.0 1406 x86 64 iso 官方原版镜像下载

适用于 x86_64 架构:
CentOS-7.0-1406-x86_64-DVD.iso                     06-Jul-2014 17:33      4G
CentOS-7.0-1406-x86_64-DVD.torrent                 07-Jul-2014 12:16    155K
CentOS-7.0-1406-x86_64-Everything.iso              04-Jul-2014 22:16      7G
CentOS-7.0-1406-x86_64-Everything.torrent          07-Jul-2014 12:16    264K
CentOS-7.0-1406-x86_64-GnomeLive.iso               04-Jul-2014 17:22      1G
CentOS-7.0-1406-x86_64-GnomeLive.torrent           07-Jul-2014 12:16     42K
CentOS-7.0-1406-x86_64-KdeLive.iso                 04-Jul-2014 17:44      1G
CentOS-7.0-1406-x86_64-KdeLive.torrent             07-Jul-2014 12:16     49K
CentOS-7.0-1406-x86_64-Minimal.iso                 17-Jul-2014 14:16    566M
CentOS-7.0-1406-x86_64-NetInstall.iso              04-Jul-2014 15:59    362M
CentOS-7.0-1406-x86_64-NetInstall.torrent          07-Jul-2014 12:16     15K
CentOS-7.0-1406-x86_64-livecd.iso                  04-Jul-2014 17:00    687M
CentOS-7.0-1406-x86_64-livecd.torrent              07-Jul-2014 12:16     27K
版本说明:

DVD:        # 标准安装镜像,一般常用。
Minimal:    # 最小安装镜像,自带的软件最少。
Everything: # 标准的基础上集成所有软件,镜像最大。
NetInstall: # 网络安装镜像,包小,但需联网才能安装。
更多版本请参阅《下载 CentOS ISO》。

2025优秀开源镜像站

企业站URL
腾讯云http://mirrors.tencent.com/
阿里云https://developer.aliyun.com/mirror/
网易https://mirrors.163.com/
华为https://mirrors.huaweicloud.com/
首都在线https://mirrors.yun-idc.com/
教育站URL
清华大学https://mirrors.tuna.tsinghua.edu.cn/
中国科技大学https://mirrors.ustc.edu.cn/
北京交通大学https://mirror.bjtu.edu.cn/
浙江大学https://mirrors.zju.edu.cn/
官方站URL
CentOShttps://mirrormanager.fedoraproject.org/mirrors
Ubuntuhttps://launchpad.net/ubuntu/+cdmirrors
Archlinuxhttp://www.archlinux.org/mirrors/status/
Debianhttps://www.debian.org/mirror/list
Fedorahttps://apps.fedoraproject.org/

Shell脚本批量清理磁盘并钉钉推送通知

# BLOG://renwole.com/
# 以下脚本需要使用跳板机,或免密登录的机器批量执行,但也可改造单机执行,仅需将登录环节注释掉即可
#
tite=$(date "+%Y-%m-%d %H:%M:%S")
#hostnamelist="主机文件列表,一行一个IP,无需加双引号,例如;/mnt/renwolecom"
hostnamelist="/tmp/renwole_com"
# 清理失败的日志
renwole_com_disk_clean_log="/tmp/renwole_clean_failure.log"
#for envNamelist in ${Name[@]}; do
#       如果使用api接口获取主机列表,可以使用jq过滤josn,但请先安装jq 1.5 及以上版本,yum install epel && yum install jq ,epel源 Centos 7 默认版本1.5+,Centos6+版本均为1.3
#       curl -s 可通过url获取josn格式并通过jq过滤 | jq .data | jq -r .[].hostname
#done >$hostnamelist

# 钉钉通知,可根据if条件,指定多个不符合条件的通知
dingding_Notice()
{
    dingtalk_openapi_url="//oapi.dingtalk.com"
    dingtalk_openapi_token="Token"
    if [[ "$(disk_use)" -ge 80 ]]; then
        curl ''$dingtalk_openapi_url'/robot/send?access_token='$dingtalk_openapi_token'' \
        -H 'Content-Type: application/json' \
        -d '{"msgtype": "text",
        "text": {
        "content": "系统日志已清理成功,但依旧使用空间依旧超过80%,请及时修复,机器是:'"$hostname"'"
    }
}'
   fi
}

# 检测机器是否能够登录,最大尝试5次,每次等待5秒(机器非常卡时,不做重试可能会出现误报情况)
check_login()
{
for i in $(seq 1 5); do
        [ $i -gt 1 ]
        $login_docker 2> /dev/null exit && antl=0 && break || antl=$?;
        sleep 5
done
echo $antl
}

# 登录容器后,检测相关命令是否可用,失败重试3次(某些机器非常卡,获取结果时会超时或为空的情况下重试)
check_login_command()
{
    for i in $(seq 1 3); do
        [[ $i -gt 1 ]]
        $login_docker >/dev/null 2>&1 "type du" >/dev/null 2>&1 && antc=0 && break || antc=$?;
        sleep 5
    done
    echo $antc
}

# 检测机器是否可正常联网,失败重试5次,每次重试等待10秒钟(可选项)
check_login_command_netwotk()
{
    # 如果网络异常,请到容器机器上查看此文件
    gateway="www.renwole.com"
    curl_timeout="curl -I -s --connect-timeout 16"
    for i in $(seq 1 5); do
        [[ $i -gt 1 ]]
        $login_docker "$curl_timeout $gateway 2>/dev/null -w %{http_code} | tail -n1" && antn=200 && break || antn="$?";
        sleep 10
    done
}

# 远程获取当前磁盘使用大小
disk_use()
{
    disk_uses=$($login_docker "df -P|sort -n|grep /dev |grep -v -E '(shm|tmp|boot)'")
    disk_status=$(echo $disk_uses | awk -F'[ %]+' '{print $5}')
    echo $disk_status
}

# 查找需要清理的日志目录及文件类型,并指定所需要清理的大小,这里指定20M
system_log_file()
{
    # 支持多个目录巡检,以空格分隔,后面的'/'一定要加
    renwole_log_dir=(/var/log/ /usr/local/nginx/logs/)
    for log_dirs in ${renwole_log_dir[*]}; do
        # 远程登录机器,并定义需要清理的文件类型,然后丢进黑洞
        $login_docker "find $log_dirs 2> /dev/null -type f -size +20M \( -name "*.data*" \
        -o -name "message*" -o -iname "wtm*" -o -name "vsa*" -o -name "secu*" \
        -o -name "cron*" -o -name "*.log*" \) -exec cp /dev/null {} \;"
    done
}

# 获取哪些目录或文件占用的空间大,并按大小排序,并获取前两行文件大小目录
system_file_size_check()
{
    home_file_size=$($login_docker "du -h --max-depth=5 /home/* | sort -h | tail -n5 |head -n2")
    echo $home_file_size
}

# 管道令牌 | 进程并发 
renwole_com="/tmp/renwolcomfile"
[ -e "$renwole_com" ] || mkfifo $renwole_com
exec 3<>$renwole_com
rm -rf $renwole_com

for ((i=1;i<=1000;i++)); do echo >&3
done

# 开始循环检测机器磁盘磁盘使用状态,不符合条件的则报警
for hostname in `cat $hostnamelist`; do
    read -u3
    {
        # 远程检测机器是否可登录,最大尝试30s,无法免密登录的机器则自动跳过登录
        login_docker="timeout 30 ssh -o BatchMode=yes $hostname"
        if [[ $(check_login) -ne 0 ]]; then
            echo "容器登录失败 $hostname" >>$renwole_com_disk_clean_log
            # 符合条件终止本次循环,继续下次循环
            echo >&3
            continue 
        fi

        if [[ $(check_login_command) -ne 0 ]]; then
            echo "无法找到du命令 $hostname" >>$renwole_com_disk_clean_log
            echo >&3
            continue
        fi

        if [[ $(disk_use)  -gt 80 ]]; then
            # 如果磁盘使用率大于80%,触发清理
            system_log_file
        else
            echo "当前磁盘使用 $(disk_use)% 未超 80%,$hostname"
            echo >&3
            continue
        fi

        if [[ $(disk_use)  -gt 80 ]]; then
            echo "$tite $hostname 磁盘清理失败,当前使用率为 $(disk_use)%,文件大小:$(system_file_size_check)" >>$renwole_com_disk_clean_log
            echo "清理磁盘失败,当前使用率为 $(disk_use)% $hostname"
        else
            echo "清理磁盘成功,清理后使用率 $(disk_use)% $hostname"
        fi
        echo >&3
    }&
done
wait
# 关闭
exec 3<&-
exec 3>&-
# 是否开启钉钉通知,默认关闭
# dingding_Notice

Linux检测CPU | 内存 | 磁盘使用率Shell脚本(钉钉通知)

#!/bin/bash
# BLOG : //renwole.com
now_time=$(date -u -d"+8 hour" +'%Y-%m-%d %H:%M:%S')
# 获取域名
hostnamelist=$(hostname)
# 当cpu使用率大于设置的阀值触发报警
cpu_warn="60"
# 当内存仅剩余2048MB时触发报警
mem_warn="2048"
# 当磁盘使用率大于设置的阀值触发报警
disk_warn="80"
# 每执行一次都会在机器上生成对应的日志
renwole_check_log="/tmp/renwole_check_mem_cpu_disk.log"
# 钉钉报警Token
dingtalk_openapi="//oapi.dingtalk.com"
dingtalk_openapi_token="Token"

# 获取CPU使用率
item_cpu () {
cpu_idle=$(top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d ".")
echo "$now 当前cpu使用率为 $cpu_idle" >> $renwole_check_log
if [[ "$cpu_idle" -gt "$cpu_warn" ]]; then
        curl ''$dingtalk_openapi'/robot/send?access_token='$dingtalk_openapi_token'' \
        -H 'Content-Type: application/json' \
        -d '{"msgtype": "text",
        "text": {
        "content": "警告:当前机器'$hostnamelist'CPU使用率达到60%,请知晓."
}
}'
else
        echo "CPU健康状态正常"
fi
}
# 获取内存消耗情况
item_mem () {
mem_free=$(free -m | grep "Mem" | awk '{print $4+$6}')
echo "$now 当前内存剩余空间为 ${mem_free}MB" >> $renwole_check_log
if [[ "$mem_free" -lt "$mem_warn" ]]; then
        curl ''$dingtalk_openapi'/robot/send?access_token='$dingtalk_openapi_token'' \
        -H 'Content-Type: application/json' \
        -d '{"msgtype": "text",
        "text": {
        "content": "警告:当前机器'$hostnamelist'内存使用率不足2048MB,请知晓."
}
}'
else
        echo "内存使用率正常,放心使用"
fi
}
# 获取磁盘使用情况
item_disk () {
disk_use=$(df -P | grep /dev/sdb1 | grep -v -E '(tmp|boot)' | awk '{print $5}' | cut -f 1 -d "%")
echo "$now 当前磁盘使用率为 $disk_use" >> $renwole_check_log
if [[ "$disk_use" -gt "$disk_warn" ]]; then
        curl ''$dingtalk_openapi'/robot/send?access_token='$dingtalk_openapi_token'' \
        -H 'Content-Type: application/json' \
        -d '{"msgtype": "text",
        "text": {
        "content": "警告:当前机器'$hostnamelist'磁盘使用率达到80%,请知晓."
}
}'
else
        echo "硬盘使用率未超过80%,放心使用"
fi
}

item_cpu
item_mem
item_disk

Zabbix Agent Remotely Install Shell(batch & Single)

批量安装:

#!/bin/sh
Server=10.16.8.8
ServerActive=10.16.8.8:10050
ip_array=("hostnamerenwole1" "hostnamerenwole2")

for ip in ${ip_array[*]}
do
zabbix=$(ssh $ip 'find /etc -name zabbix_agentd.conf')
if [ -f $zabbix ];then
ssh $ip 'rpm -ivh //repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm ; yum -y install zabbix-agent'
else
echo "Already exist, no need to install"
fi
ssh $ip '
sed -i "s#Server=.*#Server='$Server'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#ServerActive=.*#ServerActive='$ServerActive'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#Hostname=.*#Hostname='$ip'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s/# UserParameter=/UserParameter=/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s#UserParameter=.*#UserParameter=pro.check,sh /renwole/Apps/check.sh|wc -c#" /etc/zabbix/zabbix_agentd.conf
chmod -R 777 /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
'
done

交互式安装:

#cat /renwole/bin/Zabbix_Agent_Single.sh
#!/bin/sh
read -p "Please enter the HostName:" HostName
Server=10.16.8.8
ServerActive=10.16.8.8:10050
zabbix=$(ssh $HostName 'find /etc -name zabbix_agentd.conf')
if [ -f $zabbix ];then
ssh $HostName 'rpm -ivh //repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm ; yum -y install zabbix-agent'
else
echo "Already exist, no need to install"
fi
ssh $HostName '
sed -i "s#Server=.*#Server='$Server'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#ServerActive=.*#ServerActive='$ServerActive'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#Hostname=.*#Hostname='$HostName'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s/# UserParameter=/UserParameter=/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s#UserParameter=.*#UserParameter=pro.check,sh /renwole/Apps/check.sh|wc -c#" /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
'

PHP 7.3 configure: error: Please reinstall the libzip distribution

Q:问题描述:configure: error: Please reinstall the libzip distribution
问题解决:
$ yum remove -y libzip
$ wget -P /mnt/renwolecom //nih.at/libzip/libzip-1.2.0.tar.gz
$ tar -zxvf libzip-1.2.0.tar.gz
$ cd libzip-1.2.0
$ ./configure
$ make && make install

Q:问题描述:configure: error: off_t undefined; check your library configuration
问题解决:

$ echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf
$ ldconfig -v

Q:问题描述:/usr/local/include/zip.h:59:21: fatal error: zipconf.h: No such file or dire
问题解决:

$ cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h

Shell脚本变量判断参数命令学习篇

最近在深度学习shell脚本,先温习下最基础的,若长时间不碰,可能会忘记些许参数,所以这里笔记下来,以备后续翻阅。

1.系统变量

$n   传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$?   上个命令的退出状态,或函数的返回值。成功返回0,失败返回1
$#   传递给脚本或函数的参数个数
$*   所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2
$0   正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径
$@   被双引号(” “)包含时,与 $* 稍有不同。若一个脚本接收到两个参数,$@等价于$1$2
$$   当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID
$!   前一个后台命令的进程号

2.文件或目录判断

-b file 若文件存在且是一个块特殊文件,则为真
-c file 若文件存在且是一个字符特殊文件,则为真
-d file 若文件存在且是一个目录,则为真
-e file 若文件存在,则为真
-f file 若文件存在且是一个规则文件,则为真
-g file 若文件存在且设置了SGID位的值,则为真
-h file 若文件是软链接,则为真
-k file 若文件存在且设置了”sticky”位的值
-L file 若文件为符号链接,则为真
-p file 若文件存在且为一已命名管道,则为真
-r file 若文件可读,则为真
-s file 判断文件是否存在,且是否为非空,不为空,则为真
-S file	判断文件是否存在,且是否为套接字文件
-t file 文件描述符(默认为1)指定的设备为终端时为真
-u file 若文件存在且设置了SUID位,则为真
-w file 若文件可写,则为真
-x file 若文件可执行,则为真
[ file1 -nt file2 ] 若file1比file2新,或file1存在但file2不存在,则为真
[ file1 -ot file2 ] 若file1比file2老,或file2存在但file1不存在,则为真
[ file1 -ef file2 ] 若file1和file2指向相同的设备和节点号则返回,为真

3.整数判断

-eq  两数相等,则为真     例:if [ "$a" -eq "$b" ]
-ne  两数不相等,则为真   例:if [ "$a" -ne "$b" ]
-gt  a大于b,则为真       例:if [ "$a" -gt "$b" ]
-ge  大于或等于,则为真   例:if [ "$a" -ge "$b" ]
-lt  a小于b,则为真       例:if [ "$a" -lt "$b" ]
-le  a小于或等于b,则为真 例:if [ "$a" -le "$b" ]

<    小于(需双括号)      例:(("$a" < "$b"))
<=   小于等于(需双括号)  例:(("$a" <= "$b")) 
>    大于(需双括号)      例:(("$a" > "$b"))
>=   大于等于(需双括号)  例:(("$a" >= "$b"))

小数据比较可使用AWK

4.逻辑运算判断符

!  [ ! false ]              返回true 逻辑否,条件为假,结果为真
-a [ $a -lt 2 -a $b -gt 5 ] 返回true 逻辑与,两个表达式都为真,则为真
-o [ $a -lt 2 -o $b -gt 5 ] 返回true 逻辑或,只要有一个表达式为true,则为真

[ ] || [ ] 用OR来合并两个条件
[ ] && [ ] 用AND来合并两个条件

5.字符串判断

== 若两个字符串相同则为真,与=等价 例:[ "str1" = "str2" ]
!= 若字符串不相同则为真           例:[ "str1" != "str2" ]
<  若str1字典排序在str2前则为真   例:[[ "str1" < "str2" ]] >  若str1字典排序在str2后则为真   例:[ "str1" \> "str2" ]
-n 若str长度非零则为真,即非空     例:[ -n "str1" ]
-z 若file长度为零,即空,则为真     例:[ -z "str1" ]

注意:在[]结构中”<“需要被转义,例如:[ "str1" /< "str2" ],在双中括号中则无需转义。

总结:

使用-n在[]结构中测试,必须要用""把变量引起来,使用一个未被""的字符串,请使用 ! -z ,如果使用未被双引号变量,虽然可以工作,但这并不安全,习惯于使用双引号括住变量测试字符串是一种良好的习惯。
另外,[[ ]] 结构比[ ]结构更加通用。