【服务器】【问题排查】通过系统日志syslog查找历史执行命令

本文最后更新于:2023年6月6日 晚上 18:28

问题描述

想要取消一个py脚本的开机启动,但忘记了之前使用的是哪种设置方法。经过一番折腾后成功解决,为避免再次忘记,决定记录问题解决过程。

问题解决

开机后,先检查脚本是否运行:

要在Linux上检测后台运行的所有Python脚本,你可以使用ps命令结合grep过滤器来查找正在运行的进程。以下是一些可能的方法:

  1. 使用ps命令和grep过滤器来查找包含"python"关键字的进程:

    1
    ps aux | grep python
    这将列出所有包含"python"关键字的进程,包括后台运行的Python脚本。

  2. 使用pgrep命令来查找正在运行的Python进程:

    1
    pgrep python
    这将列出所有正在运行的Python进程的进程ID。

  3. 如果你想获取更详细的信息,可以使用ps命令结合-f选项和grep过滤器来查找包含".py"扩展名的进程:

    1
    ps -ef | grep '.py'
    这将列出所有包含".py"扩展名的进程,并显示详细的进程信息。

请注意,这些命令可能会列出其他正在运行的Python进程,而不仅仅是后台运行的脚本。如果你想仅限于后台运行的脚本,可能需要结合其他条件进行过滤,例如特定的脚本名称、参数等。

运行结果

这段命令 /bin/sh -c python3 /home/qalxry/Drcom/latest-wired-python3.py 的含义如下:

  • /bin/sh 是一个指向 Bourne shell 或其兼容版本的路径。在这种情况下,它用作一个简单的命令解释器。
  • -c 选项告诉 shell 解释器后面的参数是一个命令字符串。
  • python3 是要执行的命令,表示要运行 Python 3 解释器。
  • /home/qalxry/Drcom/latest-wired-python3.py 是要执行的 Python 脚本的路径和文件名。

因此,该命令将使用 /bin/sh(Bourne shell)作为解释器,执行 python3 命令,将 /home/qalxry/Drcom/latest-wired-python3.py 作为参数传递给 Python 3 解释器。这将导致系统运行该 Python 脚本。

根据提供的命令本身,无法确定命令是由谁发起的。这只是一个在终端上执行的命令,而没有提供关于命令发起者的任何信息。

如果你想了解命令是由哪个用户发起的,可以使用一些其他的方法来追踪。例如,你可以查看系统日志文件(如 /var/log/auth.log/var/log/syslog)来查看登录记录和命令执行记录。这些日志文件通常包含有关用户登录和执行命令的信息,包括用户名、IP 地址和时间戳等。

另外,你也可以使用命令行工具 last 来查看最近的登录记录。例如,运行 last 命令将显示最近登录到系统的用户列表,包括登录时间和来源 IP 地址。你可以根据登录时间来确定哪个用户最有可能发起了该命令。

需要注意的是,这些方法只能提供一些指示,而不是确切地确定命令发起者。如果你需要更具体的信息,可能需要结合其他的审计和监控工具来进行进一步的分析。确定脚本运行,从系统日志中查找调用记录。

系统日志通常包含了启动过程中的各种事件和消息,其中可能包含有关自动启动脚本的信息。

在大多数Linux发行版中,系统日志文件通常位于/var/log目录下,具体的日志文件名称可能因发行版而异。以下是一些常见的系统日志文件及其对应的发行版:

  • Ubuntu、Debian和类似的发行版:
    • /var/log/syslog
    • /var/log/boot.log
  • CentOS、Red Hat和类似的发行版:
    • /var/log/messages
    • /var/log/boot.log

从日志条目信息中查找到:

1
Jun 6 03:46:49 qalxry CRON[687]: (root) CMD (python3 /home/qalxry/Drcom/latest-wired-python3.py)

可以看出,这是一个由cron调度的定时任务。cron是Linux系统中用于执行预定任务的工具。在这个日志条目中,cron通过root用户执行了以下命令:

1
python3 /home/qalxry/Drcom/latest-wired-python3.py

这是你设置的脚本在开机时自动运行的方法之一。cron通过定期检查预定的时间表(crontab)来执行命令。这里的日志条目显示了cronroot用户身份执行了指定的Python脚本。

你可以使用crontab -l命令查看root用户的定时任务列表,以获取更多关于自动运行脚本的详细信息。例如,在终端中输入以下命令:

1
sudo crontab -l

这将显示root用户的定时任务列表,其中可能包含有关自动运行脚本的条目。

注意:在使用sudo crontab -l时,你可能需要输入管理员密码来查看root用户的定时任务列表。

要取消在系统启动时自动运行的定时任务,你可以编辑root用户的定时任务列表,并删除相应的条目。请按照以下步骤进行操作:

  1. 在终端中,以管理员身份使用以下命令编辑root用户的定时任务列表:

    1
    sudo crontab -e

  2. 如果系统询问你选择文本编辑器,请选择你喜欢的编辑器(例如,nano、vim、或者其他你熟悉的编辑器)。

  3. 定时任务列表将在编辑器中打开。找到包含要取消的自动运行脚本的条目,这里的条目是:

    1
    @reboot python3 /home/qalxry/Drcom/latest-wired-python3.py

  4. 删除这个条目或将其注释掉(在行首添加 # 符号)。

  5. 保存并关闭编辑器。

完成以上步骤后,相应的定时任务将被移除或注释掉,这样在系统启动时就不会再自动运行该脚本。

请注意,在使用sudo crontab -e命令编辑定时任务列表时,你可能需要输入管理员密码来获取编辑权限。

至此问题解决。

——解决方案来自与ChatGPT的对话


【服务器】【问题排查】通过系统日志syslog查找历史执行命令
https://qalxry.github.io/2023/06/06/【服务器】【问题排查】通过系统日志syslog查找历史执行命令/
作者
しずり雪
发布于
2023年6月6日
更新于
2023年6月6日
许可协议