Linux常见较全的故障修复思路及解决方案

文章列举了crontab任务不执行的常见问题,包括脚本解析器错误、文本路径不存在、权限不足、时区不一致和语法错误,并提供了相应的解决方案。此外,还讨论了服务器资源耗尽、boot空间耗尽导致的问题,以及如何通过查看系统日志和使用诊断工具来定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、crontab不执⾏

1、脚本编辑器错误

2、crontab任务⾏所有的⽂本路径not exists

3、crontab脚本⽂件及命令⾏所⽤⽂件,权限不足

 4、时区服务器时区、crontab进程执⾏的时区不⼀致

二、服务器器资源耗尽

三、boot空间耗尽导致apt install软件失败

四、Permission denied

五、你是否尝试过查看系统日志以获得更多信息?是哪些日志文件?你能否提供日志文件内容?

六、是否有其他用户或进程影响到系统的正常运行?是否有异常的进程或服务运行?

七、是否通过诊断和测试工具(如ping,traceroute,tcpdump等)来确定问题的来源?你的结果是什么


一、crontab不执⾏

crontab是linux自动周期执⾏脚本的常用工具,实现服务器按着设定的周期策略进⾏执⾏脚本或命令任务,但是 crontab也常出现一些不执⾏的问题导致计划任务未按预期执⾏。 根据个⼈运维工作所⻅的案例,进行归纳,常⻅问题如下:


1、脚本编辑器错误

shell脚本:#!/bin/bash #!/bin/sh

python脚本 #!/bin/env/python 应根据服务器实际环境,设置好脚本解析器

2、crontab任务⾏所有的⽂本路径not exists

如果在执行crontab任务时出现所有的文本路径不存在的错误,那么肯定是因为crontab中指定的路径不存在。要解决这个问题,可以采取以下步骤:

  1. 确认文本路径是否正确,如果是相对路径,需要注意当前工作目录是否正确。
  2. 确认文本路径所在的文件夹是否存在,如果不存在需要手动创建。
  3. 如果文本路径指向的是一个文件而非文件夹,则需要确认该文件是否存在。
  4. 如果以上步骤都没有解决问题,可以尝试使用绝对路径替换相对路径。

如果以上步骤都无法解决问题,那么可能是其他原因导致的crontab任务执行失败,请继续排查。

3、crontab脚本⽂件及命令⾏所⽤⽂件,权限不足

要编辑或运行crontab脚本文件或命令行,需要具有相应的权限。如果您没有足够的权限,可以尝试以下方法:

  1. 使用root用户登录系统或者向管理员请求授予相应的权限。
  2. 如果您是该文件或目录的所有者,使用chmod命令更改权限,以允许您和其他用户访问文件。例如,使用chmod u+rwx filename来授予所有者读、写、执行权限。
  3. 如果您没有所有权,但是您管理的用户组有访问权限,则可以使用chmod命令更改用户组权限。例如,使用chmod g+rwx filename来授予用户组读、写、执行权限。
  4. 如果不是以上情况,您可以联系管理员或所有者,请求他们将文件或目录的权限更改为允许您访问。

 4、时区服务器时区、crontab进程执⾏的时区不⼀致

如果您的服务器所在的时区与您的计划任务执行的时区不一致,可能会导致计划任务在错误的时间运行或无法运行。您可以通过以下步骤来解决这个问题:

  1. 确认服务器的时区设置是否正确。可以使用以下命令来检查:
timedatectl

如果时区不正确,可以使用以下命令来设置:

sudo timedatectl set-timezone <时区>

2.确认crontab进程的时区设置是否正确。可以在计划任务执行的脚本中添加以下命令来设置时区:

export TZ=<时区>

例如,如果您的时区是美国洛杉矶,则可以添加以下命令:

export TZ=America/Los_Angeles

这将确保计划任务在正确的时区下执行。

在158服务器、163服务器,时区不一致导致,指定时间内未按照预期执行导致未得到预期效果

时区问题,可进行tzselect进行修改时区,保持一致

5、crontab语法错误

分 时 日 月 周 cmd
minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是⾃己编写的脚本⽂件

6、系统变量问题 命令⾏调试成功,放在crontab不执行,crontab执⾏脚本中用的命令也是检查的⽅方向,若不是/bin/urcmd、/sbin/urcmd、/usr/bin/urcmd、/usr/sbin/urcmd等crontab进程可执⾏cmd,可做软连接到以上4种形式

二、服务器器资源耗尽

1、disk磁盘空间 df -h
2、inode耗尽 df -i 若inode耗尽,可查找服务器是否存在大量的缓存⽂件或空文件或程序生成的历史⽂件未及时删除和规范管理

3、内存耗尽 free -m + top
4、cpu耗尽 top + shift C
服务器磁盘空间耗尽(No space left),⼀句句话命令快速定位:find / -size +1G 2>/dev/null |xargs du - sh 2>/dev/null
可缩⼩范围快速查找,eg: find /home -size +1G 2>/dev/null |xargs du -sh 2>/dev/null

三、boot空间耗尽导致apt install软件失败

多次升级Linux内核,在升级的过程又没有将过时的Linux内核清除,导致在本地保存了多个版本的Linux内核以⾄于/boot分区的剩余空间不⾜

1、dpkg --get-selections | grep linux-image 查看已安装的linux内核版本

2、以下操作应足够谨慎,仅删除老旧未使用的内核文件。

      rm -f /boot/initrd.img-4.4.0-47-generic
      rm -f /boot/initrd.img-4.4.0-9*

四、Permission denied

检查⽅向:文件及目录属组属主权限问题 ⽤户权限问题

这个错误意味着你没有足够的权限来访问或执行该命令或文件。有以下几种可能性:

  1. 文件或目录所属的用户或用户组没有执行该操作的权限。你可能需要通过更改权限或更改文件或目录的所有者来解决这个问题。

  2. 你以不同于文件或目录所有者的身份登录。你可能需要使用sudo命令或切换到文件或目录所有者的用户来执行操作。

  3. 你正在尝试访问一个受限制的文件或目录。你可能需要获得访问该文件或目录的特殊权限或访问凭据。

你需要进一步检查文件和目录的所有者,属组和权限,以及你当前的用户身份。如果你确定你没有足够的权限,你需要联系管理员以获得特殊访问权限或解决权限问题。

五、你是否尝试过查看系统日志以获得更多信息?是哪些日志文件?你能否提供日志文件内容?

一些包含重要信息的Linux系统日志文件包括:

  1. /var/log/messages:此文件记录了系统的重要消息和警告。

  2. /var/log/syslog:此文件包含系统和应用程序的消息。

  3. /var/log/kern.log:此文件包含有关内核的信息。

  4. /var/log/auth.log:此文件包含有关系统安全和登录事件的信息。

如果您想查看这些日志文件,则可以使用文本编辑器打开它们。例如,您可以使用以下命令查看/var/log/messages:

$ sudo nano /var/log/messages

如果您想查看完整的系统日志,您可以使用以下命令:

$ sudo tail -f /var/log/syslog

请注意,为了查看这些文件,您需要具有root或sudo权限。

六、是否有其他用户或进程影响到系统的正常运行?是否有异常的进程或服务运行?

可以通过以下命令查看其他用户或进程是否影响到系统的正常运行:

1、查看系统中所有进程的状态:ps aux

该命令可以列出系统中所有正在运行的进程,包括进程的 PID、所属用户、CPU使用率、内存使用率等信息,通过查看进程状态可以发现异常进程。

2、查看系统中所有用户:w

该命令可以列出系统中所有的登录用户及其相关信息,通过查看用户状态可以发现异常用户。

3、查看系统中的服务状态:systemctl status

该命令可以查看系统中所有服务的状态,包括服务是否正在运行、运行状态、使能状态等,通过查看服务状态可以发现异常服务。

另外,可以使用lsof命令来查看哪些进程占用了哪些文件,以及哪些网络端口被占用。通过检查这些信息,可以识别出哪些进程或服务对系统造成了影响。

七、是否通过诊断和测试工具(如ping,traceroute,tcpdump等)来确定问题的来源?你的结果是什么

是的,Linux可以使用各种诊断和测试工具来确定问题的来源。一些常用的工具包括ping、traceroute、tcpdump、netstat等。

  • Ping工具可以用于测试与目标服务器是否可以建立网络连接,并且可以测量网络延迟和数据包丢失率。
  • Traceroute工具可以跟踪网络中数据包的传输路径,以帮助确定出现问题的位置。
  • Tcpdump工具可以捕获网络流量并显示其内容,以便诊断网络问题。
  • Netstat工具可以显示当前Linux系统上打开的所有网络连接和端口状态。

使用这些工具可以帮助诊断和测试网络问题,并确定出现问题的原因。结果可能会包括网络延迟较高、数据包丢失、防火墙配置错误等问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的雷神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值