是否有软件可以定期启动和关闭应用程序?

ors*_*iro 11 command-line software-recommendation schedule

示例用例:

我想每 3 小时定期启动Telegram Desktop,持续 15 分钟,以检查新传入的消息。15 分钟后,应用程序应再次关闭并在接下来的 3 小时后重新启动。

Jac*_*ijm 9

Cron 与后台脚本

当然,首先想到的是使用cron. 是否使用 cron,或一个小的后台脚本主要是一个品味问题。

cron 的优点是它与现有进程挂钩(尽管脚本对处理器负载实际上没有任何添加)。

后台脚本的优点是更加灵活;如果您想更改时间或其他设置,只需杀死它并使用其他参数运行它。您还可以在其他应用程序中重复使用它,而无需进行其他设置,只需一个命令即可。

下面的脚本可以通过命令运行(例如)

python3 <script> <command_to_run_application> <cycle_time> <application_run_time> force
Run Code Online (Sandbox Code Playgroud)

如果设置了最后一个参数,则会强制终止应用程序。如果未设置,应用程序将正常关闭,以确保可能的更改等不会丢失。

剧本

python3 <script> <command_to_run_application> <cycle_time> <application_run_time> force
Run Code Online (Sandbox Code Playgroud)

使用

  • 将脚本复制到一个空文件中,另存为 cycle_run.py
  • 使用以下命令运行它:

    python3 /path/to/cycle_run.py <command> <cycle_time> <application_run_time> force
    
    Run Code Online (Sandbox Code Playgroud)

    在哪里:

    • <command>是命令来运行应用程序(不--%u-section,在我的情况,从复制的.desktop文件:/home/jacob/Downloads/Telegram/Telegram
    • <cycle_time> 是以分钟为单位的(总)循环时间(在您的示例中为 3 小时 = 180)
    • <application_run_time> 是应用程序应以分钟为单位运行的时间(在您的示例中为 15)
    • force是一个可选参数,用于强制终止应用程序。只需离开它即可优雅地终止应用程序。

运行带参数的应用程序

如果您运行带有参数的应用程序,请确保在命令周围使用引号来运行该应用程序,例如:

python3 /path/to/cycle_run.py 'gedit /home/jacob/Desktop/test.sh' 30 5
Run Code Online (Sandbox Code Playgroud)

最小化或在托盘中运行的应用程序

定期启动和终止应用程序通常只需要最小化和/或在托盘中。根据 OP 的要求,对此发表一些评论:

  • 如果应用程序提供从命令行在托盘中启动,只需使用参数即可。在 的情况下Telgram,要使用的参数是:

    -startintray
    
    Run Code Online (Sandbox Code Playgroud)

    虽然选择似乎不是在所有系统上工作(它在我的),如提及这里。你将不得不在你的情况下进行测试。

  • 如果应用程序没有提供最小化或托盘启动的命令行选项,我建议将(这个)脚本与这里的(我建议使用pid- 版本)结合使用,这将使启动成为可能应用程序最小化。


rɑː*_*dʒɑ 5

  1. 编辑您的 croncrontab -e 并将此行添加到您的 crontab 中,以每 3 小时将其作为计划作业运行

    00 */3 * * * * ~/killtelegram.sh >/dev/null 2>&1 
    
    Run Code Online (Sandbox Code Playgroud)

2.打开你的终端并输入以下命令

touch ~/killtelegram.sh
chmod +x ~/killtelegram.sh
Run Code Online (Sandbox Code Playgroud)

用你喜欢的编辑器打开 killtelegram.sh 并写如下

#!/bin/bash
telegram &
sleep 15m
pkill telegram
Run Code Online (Sandbox Code Playgroud)

保存并退出

就是这样。它将每 3 小时自动打开一次,并停留 15 分钟,然后它会被杀死。