我是Linux cron job的初学者。
要求:
记录员工的出勤情况。每天上午10点,Jar应该执行并要求登录以记录他/她的存在。
Cron Job
我创建了一个cron作业并放在/etc/cron.d/
并且位于以下行。
0 10 * * * /home/user/Documents/attendance.sh
如果系统在上午10点之前启动,则会出现登录屏幕UI,但如果用户迟到并在上午10点后启动系统,则它不会显示登录屏幕UI。
即使用户在上午10点之后登录,它也应该执行JAR。
此外,如果有另一种方法可以实现这一目标,请告诉我。 请指导。
谢谢,
ANKUR
答案 0 :(得分:4)
我有几种选择。
1 如果您希望在登录时为每个用户运行attendance.sh
,则可以将其添加到系统范围的登录shell rc文件中,可能是/etc/profile
。
2 如果可用,您可以使用anacron
,这非常适合不会一直运行的系统。您可以安排attendance.sh
在登录后的特定时间每天运行。
这些替代方案的表现会有所不同。 1 将在每次登录时运行,因此每天数次或仅在几天内运行一次,具体取决于用户是否每天登录和退出,每天多次登录或在他们下班时保持登录状态。 2 将每天运行用户登录(假设他们至少在您指定的延迟时间内保持登录状态)。
如果您的要求更严格,请说“对所有登录用户运行10,否则在迟到用户登录时运行”。你可以做一些工作,但这样做需要一些额外的工作。
添加了以下提问评论
正如我在讨论 1 & 2 不同问题 1 ,如果用户不是在工作日开始时登录并在其结束时注销。听起来好像你真正追求的是一个绑定到窗口管理器的应用程序。我没有使用窗口管理器事件触发脚本的经验,但肯定有可能这样做,例如, Run script on screen lock/unlock。您可能需要根据您的需求和您拥有的系统进行一些研究。要记住的一件事是,对于每天不注销的用户而言,一种解决方案可能适用于每天多次注销的用户。对于您的问题,解决方案 2 可能是最简单直接的解决方案,但您可能需要更精细的方法来处理边缘情况以及(可能)员工绩效的监控位置。
答案 1 :(得分:1)
您可以让脚本每小时运行一次。脚本检查时间,如果是10或更晚,它会检查用户今天是否登录,如果没有请求他登录。所以你也可以记录登录时间。
编辑:您可以将脚本放在/etc/cron.hourly
中