我想为 Ubuntu 开发一个新程序,它将
- 监视用户的活动,如果用户在特定时间(例如上午 8:00 - 上午 10:00)频繁使用特定软件“X”,当时间到达上午 8:00 时,我的程序应该说“你现在喜欢打开‘X’软件吗?”在警告信息中。
- 如果用户安装 JAVA 之类的东西,我的程序应该说“这些软件可能会在您当前安装后有所帮助:- eclipse,Geany”
同样,我的程序应该根据用户的活动向他/她提供建议。
我从哪里开始?我应该创建自己的日志来记录用户活动吗?还是可以访问系统日志来监视用户的活动?
答案1
这听起来像是两个完全不同的问题。在我看来,你应该创建两个独立的软件,分别针对它们。(如果还没有办法的话)。
要查看是否安装了某些东西,您可以监视文件/var/log/dpkg.log
。它将包含任何 dpkg 事件,用于安装、删除、配置等。其中的行如下所示:
2015-06-04 12:57:15 status installed numlockx:amd64 1.2-5
但是,如果系统未使用英语语言环境,您将遇到问题。此外,这不包括手动软件包安装,例如将某些东西安装到/usr/local/
或/opt/
。实际上不可能观看所有软件安装方法。
为了观察用户正在运行哪些程序,您可以监视进程列表,可使用 获取ps -u <username>
。
答案2
这是一个专家系统
你想要构建的东西类似于专业系统:
它具有“工作知识” - 它了解有关系统的事实
它可以根据描述人类专家所写内容的规则对系统的变化做出反应。
它还可以对某些事情使用逻辑推理 - 但这相当有限,因为要处理的问题结构不是很清晰。
该概览图显示了专家系统的主要组成部分:
图片来源专家系统 A-level AICT 问题,作者:Navid Saqib
那么,我写这篇文章到底想表达什么呢?我想说的是,你所考虑的那种程序可能会变得非常复杂 - 通常复杂到无法实现。
因此请注意这一点,从一小部分开始,而不是试图让“主要部分”立即运行。