在Python中,您可以使用subprocess
模块来执行外部命令,如at
指令
import subprocess def send_at_command(command, at_time): # 将at时间转换为秒 at_time_seconds = int(at_time) - int(time.time()) # 如果at_time已经过去了,立即执行命令 if at_time_seconds <= 0: return subprocess.run(command, shell=True, check=True) # 创建一个at命令文件 with open("/tmp/at_command", "w") as f: f.write(f"echo '{command}' | at {at_time}") # 使用at命令执行文件 result = subprocess.run(f"atq", shell=True, check=True) job_id = result.stdout.strip() # 等待at命令执行完成 while True: result = subprocess.run(f"atrm {job_id}", shell=True, check=True) if result.stdout.strip() == job_id: break return result if __name__ == "__main__": command = "echo 'Hello, World!'" at_time = "16:30" # 24小时制时间格式 send_at_command(command, at_time)
在这个示例中,我们定义了一个名为send_at_command
的函数,它接受一个命令和一个at时间(格式为HH:MM)。函数首先将at时间转换为秒,然后检查是否已经过去。如果已经过去了,它将立即执行命令。否则,它将创建一个包含命令的at命令文件,并使用atq
命令将其添加到队列中。最后,它使用atrm
命令删除队列中的任务,并等待任务完成。
请注意,这个示例仅适用于Linux系统,因为它使用了/tmp/at_command
文件来存储at命令。在Windows系统上,您需要使用不同的方法来实现相同的功能。