Linux Crontab列表无故被清空原因分析

一 问题排查 问题描述:生产环境一台服务器重启后,发现应用模块没有自动启动,检查发现crontab列表为空。 1.1 通过关键字REPLACE、DELETE搜索crontab运行日志,查看crontab列表被清空时间: egrep ‘REPLACE|DELETE’ /var/log/cron 1.2 通过history命令查看历史操作,确认有无执行编辑crontab –e、删除crontab –r等操作。 二 问题复现 2.1 可能原因分析: 使用ssh命令执行能卡住crontab的命令,如crontab 或 crontab –等,然后直接关闭crt窗口会触发crontab的REPLACE动作(按ctrl+d也会触发REPLACE动作),导致crontab列表被清空。 具体原理不明,可能是crontab的设计使然,在后续的版本中也可能修复这个问题。 2.2 模拟环境复现: 操作系统版本:Red Hat Enterprise Linux Server release 7.6 (Maipo) 再连接并执行crontab -l检查crontab列表,发现被清空;crontab运行日志中有关键字REPLACE,问题复现成功。 三 总结 3.1 定期备份crontab列表,列表被清空时可从备份恢复。 3.2 不要误操作(如输入crontab命令不加参数、crontab -r等);发现没有反应后,不要误退出(如按ctrl+d)、误断开(如直接关闭crt窗口),正确的方法应该是按ctrl+c退出。

CentOS 8重置root密码

1. 重启服务器,立即反复单击上下键,阻止系统继续启动,在出现内核选项时按字母键e进入内核编辑模式 2. 修改启动权限配置。 找到linux行,删除不需要加载的参数(ro参数开始到末尾),将ro参数修改为:rw init=/sysroot/bin/bash 修改前 修改后 3. 然后执行Ctrl+X。 4. 运行命令chroot /sysroot/切换回原始系统。 5. 执行以下命令,重置root密码。 # passwd root 6. (可选,系统开了SELinux需要执行此步骤)执行以下命令,让SELinux生效。 # touch /.autorelabel 7. 执行以下命令,退出当前根目录。 # exit 8. 执行以下命令重启服务器。 # reboot 注:CentOS 7重置root密码步骤2稍有差异,其他步骤相同 步骤2如下: 找到linux16行,删除不需要加载的参数(ro参数开始到末尾),将ro参数修改为:rw init=/sysroot/bin/bash 或者: 删除不需要加载的参数(ro参数开始到末尾),将ro参数修改为:rw rd.break 修改前 修改后

CentOS 7.4升级OpenSSH和OpenSSL

目标: OpenSSL 1.0.2k-fips升级至OpenSSL 3.3.0 OpenSSH_7.4p1升级至OpenSSH_9.7p1 升级前版本: 下载安装包 wget https://www.zlib.net/fossils/zlib-1.3.1.tar.gz wget https://www.openssl.org/source/openssl-3.3.0.tar.gz wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz 安装zlib1.3.1 安装依赖组件 yum install gcc 解压并安装 tar xf zlib-1.3.1.tar.gz cd zlib-1.3.1 ./configure make -j4 && make install 安装openssl 3.3.0 安装依赖组件 yum install perl yum install perl-IPC-Cmd yum install perl-Data-Dumper 解压并安装 tar -xf openssl-3.3.0.tar.gz cd openssl-3.3.0 ./config make -j4 && make install ln … Read more

调整swap空间大小

1 增大swap空间大小 增大swap空间大小有如下三种方式:创建一个新的swap分区、创建一个新的swap文件、在现有的LVM2逻辑卷上扩展swap空间。推荐使用第三种方式。 1.1 创建一个新的swap分区 假设/dev/VolGroup00/LogVol02是要新建的swap分区 lvcreate VolGroup00 -n LogVol02 -L 2G mkswap /dev/VolGroup00/LogVol02 /dev/VolGroup00/LogVol02   swap     swap    defaults     0 0 systemctl daemon-reload swapon -v /dev/VolGroup00/LogVol02 cat /proc/swaps free -h 1.2 创建一个新的swap文件 dd if=/dev/zero of=/swapfile bs=1024 count=65536 将count替换为等于所需块大小的值。 mkswap /swapfile chmod 0600 /swapfile /swapfile          swap            swap    defaults        0 0 systemctl daemon-reload swapon /swapfile cat /proc/swaps free -h 1.3 … Read more

通过IP地址和子网掩码与运算计算出网络地址、广播地址、地址范围、本网主机数

通过ip地址和子网掩码与运算,可以计算出:网络地址、 广播地址、 地址范围、 本网主机数。 例1:IP地址192·168·100·5 子网掩码255·255·255·0。计算出网络地址、广播地址、地址范围、主机数。 1) 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址。 虚线前为网络地址,虚线后为主机地址 2)IP地址和子网掩码进行与运算,结果是网络地址 3) 将上面的网络地址中的网络地址部分不变,主机地址变为全1,结果就是广播地址。 4) 地址范围就是含在本网段内的所有主机网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出地址范围是: 网络地址+1 至 广播地址-1本例的网络地址范围是:192·168·100·1 至 192·168·100·254 5) 主机的数量主机的数量=2二进制的主机位数-2减2是因为主机不包括网络地址和广播地址。本例二进制的主机位数是8位。主机的数量=28-2=254 例2: IP地址128·36·199·3 子网掩码255·255·240·0。计算出网络地址、广播地址、地址范围、主机数。 1) 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址, 虚线前为网络地址,虚线后为主机地址 2)IP地址和子网掩码进行与运算,结果是网络地址 3)将运算结果中的网络地址不变,主机地址变为全1,结果就是广播地址。 4) 地址范围就是含在本网段内的所有主机网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出地址范围是: 网络地址+1 至 广播地址-1本例的网络地址范围是:128·36·192·1 至 128·36·207·254 5) 主机的数量主机的数量=2二进制位数的主机-2主机的数量=212-2=4094 减2是因为主机不包括网络地址和广播地址。 从上面两个例子可以看出不管子网掩码是标准的还是特殊的,计算网络地址、广播地址、地址范围、主机数时只要把地址换算成二进制,然后从子网掩码处分清楚连续1以前的是网络地址,后是主机地址进行相应计算即可。 附录1: 计算网络地址:将ip与子网掩码进行and运算得出网络地址 ip地址:192.168.98.10          子网掩码:255.255.255.224      二进制ip地址:11000000.  10101000 . 01100010 . 00001010 二进制子网掩码:11111111 . 11111111 . 11111111 … Read more

怎样允许或禁止用户/IP通过SSH方式连接服务器

方法一:通过编辑sshd配置文件实现允许或者禁止指定用户/用户组或者IP登录 在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,在配置文件末尾添加行格式如下(例如允许用户test通过192.168.1.2登录)。 AllowUsers test@192.168.1.2 说明:配置了指定用户或者用户组允许登录后,默认拒绝其他所有用户或者用户组。 在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,在配置文件末尾添加行格式如下(例如禁止用户testuser登录)。 DenyUsers testuser 上述修改需要重启sshd服务。 # systemctl restart sshd 方法二:使用DenyHosts允许或者禁止指定IP通过SSH登录 linux服务器通过设置/etc/hosts.allow和/etc/hosts.deny这个两个文件,可以限制或者允许某个或者某段IP地址远程SSH登录服务器.方法比较简单,具体如下: sshd: 192.168.1.3 sshd:ALL 说明:hosts.allow和hosts.deny两个文件同时设置规则的时候,hosts.allow文件中的规则优先级高,假设按照上述方法设置后服务器只允许192.168.1.3这个IP地址的SSH登录,其它的IP都会拒绝。

How To Rightly Update Linux Kernel

Rightly updating the Linux kernel can be done in two ways. 1. Manually install the .rpm kernel package To manually install a kernel, the best practice is to use the – i option and not the – U option. The reason is that the –U option will update the kernel and not keep the old … Read more

Linux下创建百万级小文件

单核CPU: seq 1000000 |xargs -i dd if=/dev/zero of={}.data bs=1024 count=1 >> /dev/null 2>&1 #生成百万不为空的随机文件 seq 1000000 |xargs -i dd if=/dev/urandom of={}.data bs=1024 count=1  >> /dev/null 2>&1 多核CPU: seq 1000000 |xargs -i -P 0 dd if=/dev/zero of={}.data bs=1024 count=1  >> /dev/null 2>&1 #生成百万不为空的随机文件 seq 1000000 |xargs -i -P 0 dd if=/dev/urandom of={}.data bs=1024 count=1  >> /dev/null 2>&1 验证: 单核命令是顺序执行,效率慢 … Read more

使用tmpwatch命令删除文件

tmpwatch命令参数说明 -u, –atime 基于访问时间来删除文件,默认的。 -m, –mtime 基于修改时间来删除文件。 -c, –ctime 基于创建时间来删除文件,对于目录,基于mtime。 -M, –dirmtime 删除目录基于目录的修改时间而不是访问时间。 -a, –all 删除所有的文件类型,不只是普通文件,符号链接和目录。 -d, –nodirs 不尝试删除目录,即使是空目录。 -d, –nosymlinks 不尝试删除符号链接。 -f, –force 强制删除。 -q, –quiet 只报告错误信息。 -s, –fuser 如果文件已经是打开状态在删除前,尝试使用“定影”命令。默认不启用。 -t, –test 仅作测试,并不真的删除文件或目录。 -U, –exclude-user=user 不删除属于谁的文件。 -v, –verbose 打印详细信息。 -x, –exclude=path 排除路径,如果路径是一个目录,它包含的所有文件被排除了。如果路径不存在,它必须是一个绝对路径不包含符号链接。 -X, –exclude-pattern=pattern 排除某规则下的路径。 tmpwatch命令的关键选项和参数 atime (File Last Access Time):文件最后一次被访问的时间; mtime (File Last … Read more

修改limits.conf参数后无法登录系统问题处理

问题: 修改limits.conf参数后,ssh会话自动退出,无法再连接;root用户登录,提示permission denied。 解决办法: 1.进入系统救援模式: (1)重启系统,启动菜单页面按e进行编辑 (2)在UTF-8后面添加:空格 rd.break (3)修改完,按ctrl+x (4)挂载为可读写:mount -o remount,rw /sysroot (5)输入chroot /sysroot 2.查看/var/log/secure日志中有如下内容: pam_limits(sshd:session): Could not set limit for ‘nofile’: Operation not permitted 确认是修改limits.conf参数导致的无法登录 3.修改/etc/security/limits.conf,还原设置。 4.输入exit退出sysroot,reboot重启系统 附录:进入系统救援模式也可以使用如下方式: 方式1: 在启动菜单页面,按e进行编辑 找到ro 修改为 rw init=/sysroot/bin/sh 修改完,按Ctrl-x 输入chroot /sysroot 方式2: 在启动菜单页面,按e进行编辑 将光标移动到linux16开始的行,末尾添加:rw init=/sysroot/bin/sh 修改完,按ctrl+x 输入chroot /sysroot