如何按时执行脚本?
How to execute script on schedule?
我的机器上有两个 Python 脚本,我想在特定时间段每天执行两次。我如何自动执行此任务?由于我将离开家并离开我的电脑一段时间,我想将它们上传到一个站点并从那里自动执行,而无需我做任何事情。
我该怎么做?
如果您使用的是 Linux 机器,则可以使用 cron
。 Cron 是一个系统守护进程,用于在特定时间执行特定任务。
cron
的工作原理是 crontab
,一个包含命令列表的文本文件,在指定时间 运行。它遵循特定的格式,可以在 man 5 crontab
中详细解释
crontab 的格式
每个部分都由 space 分隔,最后一个部分包含一个或多个 space。在第 1-5 节中不允许使用 space,只能在它们之间使用。第 1-5 部分用于指示您希望任务执行的时间和频率。这是 cron 作业的布局方式:
分钟 (0-59), 小时 (0-23, 0 = 午夜), 日 (1-31), 月 (1-12), 工作日 (0-6, 0 = 周日), 命令
01 04 1 1 1 /usr/bin/somedirectory/somecommand
以上示例将在 1 月 1 日加上 1 月的每个星期一 运行 /usr/bin/somedirectory/somecommand 4:01am。可以使用星号 (*) 以便使用时间段的每个实例(每小时、每个工作日、每月等)。代码:
01 04 * * * /usr/bin/somedirectory/somecommand
以上示例将在每个月的每一天 运行 /usr/bin/somedirectory/somecommand 4:01am。
逗号分隔值可用于 运行 一段时间内特定命令的多个实例。破折号分隔的值可用于 运行 连续的命令。代码:
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
以上示例将在每年一月和六月的 4:00am 和 5:00am 的 01 点和 31 点 运行 /usr/bin/somedirectory/somecommand
。
上述示例中的“/usr/bin/somedirectory/somecommand”文本表示将在指定时间运行的任务。建议您使用上述示例中所示的所需命令的完整路径。在终端中输入which somecommand
找到somecommand的完整路径。 crontab 将在正确编辑和保存后立即开始 运行ning。
您可能希望每个时间单位运行 执行某个脚本若干次。例如,如果您想每 10 分钟 运行 使用以下 crontab 条目(运行 分钟可被 10 整除:0、10、20、30 等)
*/10 * * * * /usr/bin/somedirectory/somecommand
也相当于比较繁琐
0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand
如果您使用 OSX,则 launchd is the preferred way to schedule tasks. There is a OSX CLI for launchd called launchctl but if you prefer a GUI my preferred one is launchcontrol。
在Windows中我想出了两个解决方案。
第一个选项:创建一个 .bat 文件。
步骤 1
创建一个 .bat 文件以指明您要执行的命令 运行 和将要执行的脚本文件,例如:
start C:\Users\userX\Python.exe C:\Users\userX\PycharmProjects\Automation_tasks\create_workbook.py
步骤 2
打开任务计划程序,点击任务计划程序库,查看当前执行的任务。单击“创建任务”选项。
步骤 3
在常规选项卡中,输入新任务的名称并单击选项 Run whether user is logged on or not
,选中选项 Run with highest privileges
并确保设置合适的版本 OS(在我的例子中,我选择了 Windows 7, Windows Server 2008 R2
.
步骤 4
在“操作”选项卡中,单击“新建”按钮并输入以下内容:
在 Program/Scripts 中,您需要查找任务计划程序将调用到 运行 .bat 文件的 Powershell 路径。就我而言,我的 Powershell 路径是:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
在 添加参数(可选) 中,您需要键入将由 Powershell 执行的文件的路径。在我的例子中,路径是:
C:\Users\userX\Desktop\run_the_bat_file.bat
在开始(可选)你需要输入文件的路径但没有.bat文件的名称,即:
C:\Users\userX\Desktop\
步骤 5
单击“触发器”选项卡,然后select您希望多久执行一次此任务。
步骤 6
最后,通过从任务计划程序库中 select 执行任务并单击 运行 选项来测试您的任务是否真的有效。
第二个选项:运行带有任务计划程序的 .py 文件
步骤 1
打开任务计划程序,点击任务计划程序库,查看当前执行的任务。单击“创建任务”选项。
步骤 2
在常规选项卡中,输入新任务的名称并单击选项 Run whether user is logged on or not
,选中选项 Run with highest privileges
并确保设置合适的版本 OS(在我的例子中,我选择了 Windows 7, Windows Server 2008 R2
.
步骤 3
在“操作”选项卡中,单击“新建”按钮并输入以下内容:
在 Program/Scripts 中,您需要查找 Python.exe 任务计划程序将调用的路径 运行 python 脚本。就我而言,我的 Python.exe 路径是:
C:\Users\userX\python.exe
在添加参数(可选)中,您只需要键入您的python脚本的名称。在我的例子中,路径是:
Permissions_dump.py
在开始(可选)你需要输入文件的路径但没有python脚本的名称,即:
C:\Users\userX\PycharmProjects99_vendors_costs
步骤 4
单击“触发器”选项卡,然后select您希望多久执行一次此任务。
步骤 5
最后,通过从任务计划程序库中 select 执行任务并单击 运行 选项来测试您的任务是否真的有效。
另一种选择(如果您将 .py 转换为 .exe)
如果您使用库 Cx_Freeze 将 .py 转换为 .exe,并且您希望使用任务计划程序自动执行此任务,那么您需要执行以下步骤:
步骤 1
单击“创建任务”,然后单击“操作”选项卡以输入以下内容:
在 Program/Scripts 中,您需要查找 C:\Windows\explorer.exe
任务计划程序将调用到 运行 .exe 脚本的路径.
在添加参数(可选)中,您只需要键入您的 .exe 文件的名称:CustomerPopulation.exe
在开始于(可选)你需要输入文件的路径但没有.exe文件的名称,即:
C:\Users\userX\PycharmProjects\executables
在“常规”选项卡中,确保 select 编辑了 Run only when user is logged on
并取消选中 Run with the highest privileges
。
如果报告停止工作
请务必检查您的密码是否未过期,否则将无法发送报告。
参考文献:
我的机器上有两个 Python 脚本,我想在特定时间段每天执行两次。我如何自动执行此任务?由于我将离开家并离开我的电脑一段时间,我想将它们上传到一个站点并从那里自动执行,而无需我做任何事情。
我该怎么做?
如果您使用的是 Linux 机器,则可以使用 cron
。 Cron 是一个系统守护进程,用于在特定时间执行特定任务。
cron
的工作原理是 crontab
,一个包含命令列表的文本文件,在指定时间 运行。它遵循特定的格式,可以在 man 5 crontab
crontab 的格式
每个部分都由 space 分隔,最后一个部分包含一个或多个 space。在第 1-5 节中不允许使用 space,只能在它们之间使用。第 1-5 部分用于指示您希望任务执行的时间和频率。这是 cron 作业的布局方式:
分钟 (0-59), 小时 (0-23, 0 = 午夜), 日 (1-31), 月 (1-12), 工作日 (0-6, 0 = 周日), 命令
01 04 1 1 1 /usr/bin/somedirectory/somecommand
以上示例将在 1 月 1 日加上 1 月的每个星期一 运行 /usr/bin/somedirectory/somecommand 4:01am。可以使用星号 (*) 以便使用时间段的每个实例(每小时、每个工作日、每月等)。代码:
01 04 * * * /usr/bin/somedirectory/somecommand
以上示例将在每个月的每一天 运行 /usr/bin/somedirectory/somecommand 4:01am。
逗号分隔值可用于 运行 一段时间内特定命令的多个实例。破折号分隔的值可用于 运行 连续的命令。代码:
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
以上示例将在每年一月和六月的 4:00am 和 5:00am 的 01 点和 31 点 运行 /usr/bin/somedirectory/somecommand
。
上述示例中的“/usr/bin/somedirectory/somecommand”文本表示将在指定时间运行的任务。建议您使用上述示例中所示的所需命令的完整路径。在终端中输入which somecommand
找到somecommand的完整路径。 crontab 将在正确编辑和保存后立即开始 运行ning。
您可能希望每个时间单位运行 执行某个脚本若干次。例如,如果您想每 10 分钟 运行 使用以下 crontab 条目(运行 分钟可被 10 整除:0、10、20、30 等)
*/10 * * * * /usr/bin/somedirectory/somecommand
也相当于比较繁琐
0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand
如果您使用 OSX,则 launchd is the preferred way to schedule tasks. There is a OSX CLI for launchd called launchctl but if you prefer a GUI my preferred one is launchcontrol。
在Windows中我想出了两个解决方案。
第一个选项:创建一个 .bat 文件。
步骤 1
创建一个 .bat 文件以指明您要执行的命令 运行 和将要执行的脚本文件,例如:
start C:\Users\userX\Python.exe C:\Users\userX\PycharmProjects\Automation_tasks\create_workbook.py
步骤 2
打开任务计划程序,点击任务计划程序库,查看当前执行的任务。单击“创建任务”选项。
步骤 3
在常规选项卡中,输入新任务的名称并单击选项 Run whether user is logged on or not
,选中选项 Run with highest privileges
并确保设置合适的版本 OS(在我的例子中,我选择了 Windows 7, Windows Server 2008 R2
.
步骤 4
在“操作”选项卡中,单击“新建”按钮并输入以下内容:
在 Program/Scripts 中,您需要查找任务计划程序将调用到 运行 .bat 文件的 Powershell 路径。就我而言,我的 Powershell 路径是:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
在 添加参数(可选) 中,您需要键入将由 Powershell 执行的文件的路径。在我的例子中,路径是:
C:\Users\userX\Desktop\run_the_bat_file.bat
在开始(可选)你需要输入文件的路径但没有.bat文件的名称,即:
C:\Users\userX\Desktop\
步骤 5
单击“触发器”选项卡,然后select您希望多久执行一次此任务。
步骤 6
最后,通过从任务计划程序库中 select 执行任务并单击 运行 选项来测试您的任务是否真的有效。
第二个选项:运行带有任务计划程序的 .py 文件
步骤 1
打开任务计划程序,点击任务计划程序库,查看当前执行的任务。单击“创建任务”选项。
步骤 2
在常规选项卡中,输入新任务的名称并单击选项 Run whether user is logged on or not
,选中选项 Run with highest privileges
并确保设置合适的版本 OS(在我的例子中,我选择了 Windows 7, Windows Server 2008 R2
.
步骤 3
在“操作”选项卡中,单击“新建”按钮并输入以下内容:
在 Program/Scripts 中,您需要查找 Python.exe 任务计划程序将调用的路径 运行 python 脚本。就我而言,我的 Python.exe 路径是:
C:\Users\userX\python.exe
在添加参数(可选)中,您只需要键入您的python脚本的名称。在我的例子中,路径是:
Permissions_dump.py
在开始(可选)你需要输入文件的路径但没有python脚本的名称,即:
C:\Users\userX\PycharmProjects99_vendors_costs
步骤 4
单击“触发器”选项卡,然后select您希望多久执行一次此任务。
步骤 5
最后,通过从任务计划程序库中 select 执行任务并单击 运行 选项来测试您的任务是否真的有效。
另一种选择(如果您将 .py 转换为 .exe)
如果您使用库 Cx_Freeze 将 .py 转换为 .exe,并且您希望使用任务计划程序自动执行此任务,那么您需要执行以下步骤:
步骤 1
单击“创建任务”,然后单击“操作”选项卡以输入以下内容:
在 Program/Scripts 中,您需要查找 C:\Windows\explorer.exe
任务计划程序将调用到 运行 .exe 脚本的路径.
在添加参数(可选)中,您只需要键入您的 .exe 文件的名称:CustomerPopulation.exe
在开始于(可选)你需要输入文件的路径但没有.exe文件的名称,即:
C:\Users\userX\PycharmProjects\executables
在“常规”选项卡中,确保 select 编辑了 Run only when user is logged on
并取消选中 Run with the highest privileges
。
如果报告停止工作 请务必检查您的密码是否未过期,否则将无法发送报告。
参考文献: