我正试图使用os.system((从Windows 10上的python应用程序计划一个作业在linux服务器上运行。以下代码执行了,但未能计划该作业。
os.system('ssh myadmin@mnop.com "at 09:00 {}".format("iostat > /home/myadmin/t.txt")')
os.system('ssh myadmin@mnop.com "crontab 0 9 9 1 * /home/myadmin.msg.sh"')
我的目标是安排一次执行。谢谢你的建议。
at
的唯一参数是时间;然后它从标准输入中读取命令。类似地,crontab
从标准输入读取cron调度,而不是作为命令的参数。
import subprocess
subprocess.run(['ssh', 'myadmin@mnop.com', 'at 09:00'],
text=True, check=True,
input="iostat > /home/myadmin/t.txtn")
subprocess.run(['ssh', 'myadmin@mnop.com', 'crontab'],
text=True, check=True,
input='0 9 9 1 * /home/myadmin/msg.shn')
请注意,后者将替换用户的任何现有crontab
。我纠正了你在评论中指出的拼写错误。
还请注意,我们是如何切换到subprocess.run
而不是os.system
的,如后者的文档中所建议的那样。我进行了重构以避免必须使用shell=True
;也许还可以参见';shell=真';子过程