私は2つを持っています Python scripts
特定の期間に1日に2回実行したいマシン上。このタスクを自動化するにはどうすればよいですか?私は家から離れてしばらくの間コンピューターを離れるので、それらをサイトにアップロードして、何もせずに自動的にサイトから実行されるようにします。
これどうやってするの?
Linuxマシンを使用している場合は、cron
を使用できます。 Cronは、特定の時間に特定のタスクを実行するために使用されるシステムデーモンです。
cron
は、指定された時間に実行されるコマンドのリストを含むテキストファイルであるcrontab
の原理に基づいて動作します。特定の形式に従います。詳細はman 5 crontab
で説明されています
各セクションはスペースで区切られ、最後のセクションには1つ以上のスペースが含まれます。セクション1〜5内ではスペースは使用できません。セクション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日の午前4時1分に1月の毎週月曜日に/ usr/bin/somedirectory/somecommandを実行します。アスタリスク(*)を使用して、期間のすべてのインスタンス(毎時間、毎週日、毎月など)を使用できます。コード:
01 04 * * * /usr/bin/somedirectory/somecommand
上記の例では、毎月毎日午前4時1分に/ usr/bin/somedirectory/somecommandが実行されます。
コンマ区切り値を使用して、特定のコマンドの複数のインスタンスを一定期間内に実行できます。ダッシュで区切られた値を使用して、コマンドを継続的に実行できます。コード:
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
上記の例は、毎年1月と6月の1日から15日の午前4時と午前5時を過ぎた01と31に/usr/bin/somedirectory/somecommand
を実行します。
上記の例の「/ usr/bin/somedirectory/somecommand」テキストは、指定された時間に実行されるタスクを示しています。上記の例に示すように、目的のコマンドへのフルパスを使用することをお勧めします。端末にwhich somecommand
と入力して、somecommandへのフルパスを見つけます。 crontabは、適切に編集および保存されるとすぐに実行を開始します。
スクリプトを時間単位ごとに何度か実行することができます。たとえば、10分ごとに実行する場合は、次のcrontabエントリを使用します(10で割り切れる分で実行します:0、10、20、30など)。
*/10 * * * * /usr/bin/somedirectory/somecommand
これは、より扱いにくいものと同等です
0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand
Windowsでは、2つのソリューションを考え出しました。
ステップ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
でした
Add arguments(optional)で、Powershellによって実行されるファイルのパスを入力する必要があります。私の場合、パスは次のとおりです。
C:\Users\userX\Desktop\run_the_bat_file.bat
Start(オプション)では、ファイルのパスを入力する必要がありますが、.batファイルの名前は入力しません:
C:\Users\userX\Desktop\
ステップ5
[トリガー]タブをクリックし、このタスクを実行する頻度を選択します。
ステップ6
最後に、タスクスケジューラライブラリからタスクを選択し、実行オプションをクリックして、タスクが本当に機能するかどうかをテストします。
ステップ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スクリプトを実行するために呼び出すPython.exeパスを検索する必要があります。私の場合、Python.exeのパスはC:\Users\userX\python.exe
でした
Add arguments(optional)には、onlypythonスクリプトの名前を入力する必要があります。私の場合、パスは次のとおりです。
Permissions_dump.py
Start in(optional)では、ファイルのパスを入力する必要がありますが、pythonスクリプトの名前は入力しません:
C:\Users\userX\PycharmProjects\1099_vendors_costs
ステップ4
[トリガー]タブをクリックし、このタスクを実行する頻度を選択します。
ステップ5
最後に、タスクスケジューラライブラリからタスクを選択し、実行オプションをクリックして、タスクが本当に機能するかどうかをテストします。
ライブラリCx_Freezeを使用して.pyを.exeに変換し、タスクスケジューラを使用してこのタスクを自動化する場合は、次の手順を実行する必要があります。
ステップ1
[タスクの作成]をクリックし、[アクション]タブをクリックして、次を入力します。
Program/Scriptsで、タスクスケジューラが.exeスクリプトを実行するために呼び出すC:\Windows\Explorer.exe
パスを検索する必要があります。
Add arguments(optional)に必要なのはonly.exeファイルの名前を入力する:CustomerPopulation.exe
Start in(optional)では、ファイルのパスを入力する必要がありますが、.exeファイルの名前は入力しません:
C:\Users\userX\PycharmProjects\executables
参照:
OSXを使用している場合、タスクをスケジュールするには launchd をお勧めします。 launchctl と呼ばれるlaunchd用のOSX CLIがありますが、GUIを好むなら、私の好むものは launchcontrol です。