如何锁定我的 Ubuntu 一段时间

如何锁定我的 Ubuntu 一段时间
#!/bin/bash

for i in {1..10}; do 
    timeout 1 gnome-screensaver-command -l
done

在终端中以单行命令的形式运行此命令(不带#!/bin/bash)将持续锁定我的电脑 10 秒钟,并且无法解锁。这是理想的情况。

但是,当我通过脚本运行它时,它只会锁定一次,但之后我可以立即解锁并使用电脑。请帮帮我。我想自动化它并将其用作 cron 作业。如何让它工作?

这就是我的 cron 文件中的全部内容:

1 * * * * for i in {1..5}; do timeout --foreground 1 gnome-screensaver-command -l; done > test

它甚至不会运行该作业。没有出现测试文件。当我运行时service cron status,最近没有运行任何作业,即使我命令它每分钟运行一次脚本。

答案1

更大的问题是,为什么要运行该命令 10 次,每次 1 秒,而不是 1 次,每次 10 秒?那么你甚至不需要循环。如果是为了阻止其他人输入密码并解锁计算机,也许你应该更改密码并保密。


有一些软件可以帮助管理时间,你可以尝试一下,比如番茄工作法

这款 GNOME 应用可帮助您根据以下情况管理时间:番茄工作法。它旨在通过提醒您短暂休息来提高工作效率和工作质量。

番茄工作法基于两个原则:

  • 专注于有限的工作时间,大约半小时,
  • 休息时清理思绪。

这种工作流程可以提高注意力、身体健康和思维敏捷性,具体取决于您如何度过休息时间以及您遵循常规的严格程度。

在此处输入图片描述

在此处输入图片描述

在 askubuntu 上查看此问题有可用的番茄工作法应用程序吗?,它还建议番茄等等。


如果你想暂时“停止”某个程序,你可以使用kill -STOP pidpkill -STOP pattern,例如

kill -STOP pid
sleep $seconds
kill -CONT pid

停止任何你想暂停的程序都会让系统的其余部分继续工作。我真的不想尝试停止更重要的东西,比如窗口管理器或 X/xorg。


Cron 的行为与普通用户的终端并不完全相同,它甚至可能不知道某些命令在哪里。您可以尝试:

  • 以您的用户身份运行该命令,通过sudo -u [YourUser] command(有关的更多信息,请参阅 man sudo -u)。

  • 添加命令的完整路径(通过或使用apt/synaptic 等which [command]搜索包的安装文件找到)。dpkg


听起来timeout它在交互式终端中运行时的行为与在脚本中运行时的行为不同。阅读它的信息页面会发现一个我认为你可以使用的选项:

'--foreground'
不创建单独的后台程序组,以便托管的 COMMAND 可以正常使用前台 TTY。在两种情况下,这需要支持未直接从交互式 shell 启动的超时命令。

  1. COMMAND 是交互式的,需要从终端读取,例如
  2. 用户希望支持从终端直接向 COMMAND 发送信号(例如 Ctrl-C)

    请注意,在此操作模式下,COMMAND 的任何子进程都不会超时。此外,SIGCONT 不会发送到 COMMAND,因为前台进程通常不需要它,并且它可能会导致本身就是监视器的程序(例如 GDB)出现间歇性信号传递问题。

相关内容