【服务器】【问题排查】通过系统日志syslog查找历史执行命令
本文最后更新于:2023年6月6日 晚上 18:28
问题描述
想要取消一个py脚本的开机启动,但忘记了之前使用的是哪种设置方法。经过一番折腾后成功解决,为避免再次忘记,决定记录问题解决过程。
问题解决
开机后,先检查脚本是否运行:
要在Linux上检测后台运行的所有Python脚本,你可以使用ps命令结合grep过滤器来查找正在运行的进程。以下是一些可能的方法:
使用
ps命令和grep过滤器来查找包含"python"关键字的进程:这将列出所有包含"python"关键字的进程,包括后台运行的Python脚本。1
ps aux | grep python使用
pgrep命令来查找正在运行的Python进程:这将列出所有正在运行的Python进程的进程ID。1
pgrep python如果你想获取更详细的信息,可以使用
ps命令结合-f选项和grep过滤器来查找包含".py"扩展名的进程:这将列出所有包含".py"扩展名的进程,并显示详细的进程信息。1
ps -ef | grep '.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 | |
可以看出,这是一个由cron调度的定时任务。cron是Linux系统中用于执行预定任务的工具。在这个日志条目中,cron通过root用户执行了以下命令:
1 | |
这是你设置的脚本在开机时自动运行的方法之一。cron通过定期检查预定的时间表(crontab)来执行命令。这里的日志条目显示了cron以root用户身份执行了指定的Python脚本。
你可以使用crontab -l命令查看root用户的定时任务列表,以获取更多关于自动运行脚本的详细信息。例如,在终端中输入以下命令:
1 | |
这将显示root用户的定时任务列表,其中可能包含有关自动运行脚本的条目。
注意:在使用sudo crontab -l时,你可能需要输入管理员密码来查看root用户的定时任务列表。

要取消在系统启动时自动运行的定时任务,你可以编辑root用户的定时任务列表,并删除相应的条目。请按照以下步骤进行操作:
在终端中,以管理员身份使用以下命令编辑
root用户的定时任务列表:1
sudo crontab -e如果系统询问你选择文本编辑器,请选择你喜欢的编辑器(例如,nano、vim、或者其他你熟悉的编辑器)。
定时任务列表将在编辑器中打开。找到包含要取消的自动运行脚本的条目,这里的条目是:
1
@reboot python3 /home/qalxry/Drcom/latest-wired-python3.py删除这个条目或将其注释掉(在行首添加
#符号)。保存并关闭编辑器。
完成以上步骤后,相应的定时任务将被移除或注释掉,这样在系统启动时就不会再自动运行该脚本。
请注意,在使用sudo crontab -e命令编辑定时任务列表时,你可能需要输入管理员密码来获取编辑权限。
至此问题解决。
——解决方案来自与ChatGPT的对话