乐闻世界logo
搜索文章和话题

面试题手册

Linux 定时任务 cron 的时间格式、常用命令和最佳实践有哪些?

Linux 定时任务(cron)是自动化运维的重要工具,可以定期执行脚本和命令。cron 基本概念:cron 是 Linux 系统的定时任务调度器由 cron 守护进程(crond)负责执行定时任务配置文件:/etc/crontab(系统级)、/var/spool/cron/username(用户级)时间格式:分 时 日 月 周 命令时间格式说明:分(0-59):每小时的第几分钟时(0-23):每天的第几小时日(1-31):每月的第几天月(1-12):每年的第几个月周(0-7,0 和 7 都表示周日):每周的第几天特殊符号:*:匹配所有值,:分隔多个值,如 1,3,5 表示第 1、3、5-:表示范围,如 1-5 表示 1 到 5/n:表示间隔,如 */5 表示每 5 个单位常用示例:每分钟执行:* * * * * command每小时执行:0 * * * * command每天凌晨 2 点执行:0 2 * * * command每周一凌晨 3 点执行:0 3 * * 1 command每月 1 号凌晨 4 点执行:0 4 1 * * command每 5 分钟执行一次:*/5 * * * * command工作日(周一到周五)每天上午 9 点执行:0 9 * * 1-5 commandcrontab 命令:crontab -e:编辑当前用户的定时任务crontab -l:列出当前用户的定时任务crontab -r:删除当前用户的所有定时任务crontab -u username -e:编辑指定用户的定时任务(需要 root 权限)系统级定时任务:/etc/crontab:系统级定时任务配置文件/etc/cron.hourly/:每小时执行的任务目录/etc/cron.daily/:每天执行的任务目录/etc/cron.weekly/:每周执行的任务目录/etc/cron.monthly/:每月执行的任务目录环境变量:cron 任务执行时环境变量与用户登录时不同可以在 crontab 文件中定义环境变量建议在脚本中使用绝对路径可以在脚本开头 source 环境变量文件:source ~/.bashrc日志和调试:cron 日志位置:/var/log/syslog 或 /var/log/cron查看日志:grep CRON /var/log/syslog调试技巧:将输出重定向到日志文件:command >> /tmp/cron.log 2>&1发送邮件:cron 默认会将输出发送到用户邮箱最佳实践:使用绝对路径在脚本中设置正确的环境变量添加日志记录便于调试使用锁文件防止重复执行测试脚本后再添加到 cron合理设置执行时间,避免系统高峰期定期检查 cron 任务执行情况常见问题:脚本权限不足:确保脚本有执行权限(chmod +x script.sh)环境变量问题:在脚本中显式设置环境变量路径问题:使用绝对路径或切换到正确目录时区问题:确保系统时区正确cron 服务未启动:systemctl status cron 或 systemctl start cronanacron(异步 cron):用于不是 24 小时运行的系统配置文件:/etc/anacrontab适合笔记本电脑等不常开机的设备会检查上次执行时间,如果错过则补执行systemd 定时器:systemd 的定时任务替代方案配置文件:/etc/systemd/system/*.timer查看定时器:systemctl list-timers更灵活的调度选项更好的日志集成
阅读 0·2月17日 23:39

Linux 磁盘管理和文件系统操作中如何进行分区、格式化、挂载和管理磁盘空间?

Linux 磁盘管理和文件系统是系统管理员的核心技能,涉及磁盘分区、格式化、挂载和维护等操作。磁盘分区:fdisk:传统的磁盘分区工具查看分区:fdisk -l进入交互模式:fdisk /dev/sdb常用命令:n(新建分区)、p(打印分区表)、d(删除分区)、w(保存并退出)、q(不保存退出)parted:现代磁盘分区工具,支持 GPT 分区表查看分区:parted -l进入交互模式:parted /dev/sdb创建分区:mkpart primary ext4 1MiB 100%设置分区表:mklabel gptlsblk:列出块设备信息blkid:查看块设备 UUID 和文件系统类型文件系统:常见文件系统类型:ext4、xfs、btrfs、ntfs、vfatmkfs:创建文件系统,如 mkfs.ext4 /dev/sdb1、mkfs.xfs /dev/sdb1mkfs.ext4:创建 ext4 文件系统mkfs.xfs:创建 xfs 文件系统磁盘挂载:mount:挂载文件系统,如 mount /dev/sdb1 /mnt/dataumount:卸载文件系统,如 umount /mnt/data查看挂载点:mount、df -h/etc/fstab:自动挂载配置文件格式:设备 挂载点 文件系统类型 挂载选项 dump fsck示例:/dev/sdb1 /mnt/data ext4 defaults 0 2使用 UUID:UUID=xxx /mnt/data ext4 defaults 0 2(推荐)查看设备 UUID:blkid /dev/sdb1磁盘空间管理:df:查看磁盘空间使用情况,df -h(人类可读格式)du:查看目录或文件大小,du -sh directory(显示目录总大小)du -h --max-depth=1 /:查看根目录下各目录的大小清理磁盘空间:清理包缓存:apt clean(Debian/Ubuntu)、yum clean all(CentOS/RHEL)清理旧日志:logrotate查找大文件:find / -type f -size +100MLVM(逻辑卷管理):pvcreate:创建物理卷,如 pvcreate /dev/sdb1vgcreate:创建卷组,如 vgcreate vgname /dev/sdb1lvcreate:创建逻辑卷,如 lvcreate -L 10G -n lvname vgnamelvextend:扩展逻辑卷,如 lvextend -L +5G /dev/vgname/lvnamelvreduce:缩减逻辑卷,如 lvreduce -L -5G /dev/vgname/lvnameresize2fs:调整 ext4 文件系统大小,如 resize2fs /dev/vgname/lvnamexfs_growfs:扩展 xfs 文件系统pvdisplay、vgdisplay、lvdisplay:查看物理卷、卷组、逻辑卷信息RAID(磁盘阵列):mdadm:管理软件 RAID创建 RAID 0:mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1创建 RAID 1:mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1创建 RAID 5:mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1查看 RAID 状态:cat /proc/mdstat、mdadm --detail /dev/md0磁盘性能优化:使用 SSD:提高 I/O 性能调整 I/O 调度器:echo deadline > /sys/block/sda/queue/scheduler增加文件系统块大小:mkfs.ext4 -b 4096 /dev/sdb1使用 noatime 挂载选项:减少磁盘写入启用文件系统日志:提高数据安全性磁盘故障排查:查看磁盘健康:smartctl -a /dev/sda(需要安装 smartmontools)查看磁盘 I/O:iostat -x 1查看磁盘错误:dmesg | grep -i error修复文件系统:fsck /dev/sdb1(需要先卸载)
阅读 0·2月17日 23:38