このサイトとさまざまなQを検索した後、WSLでservicesおよびsystemdを使用できないことは明らかです。 PCを起動するたびにWSLでプログラムを実行する必要があるので、crontabの使用方法に関するこのページを読みます: WindowsでUbuntuサービスを実行する方法(起動時)? |スーパーユーザー が、フォーマットがcrontabのフォーマットと一致しないため、混乱しました。しかし、これは私のcronです:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PATH=cd /usr/local/src/:cd xmr-stak-cpu:cd bin/
@reboot . Sudo ./xmr-stak-cpu
私もこれをやった:
起動時にbash/cronループを実行する
Create a file called linux.bat in Shell:startup
Paste: C:\Windows\System32\bash.exe -c 'while [ true ]; do Sudo /usr/sbin/cron -f; done'
それは動作しません。
WSLでサービスを実行するにはどうすればよいですか?確かに、Linuxのphdである必要のない方法がなければなりませんか?または、Windowsを使用する方法はありますか
Windowsで次のことを試したからです: https://github.com/Microsoft/WSL/issues/612
Run: When the computer starts,
Action: Start a program,
Program: c:\Windows\system32\bash.exe,
Arguments: -c "Sudo /xmr-stak-cpu/bin/xmr-stak-cpu -D"
Start in: /usr/local/src/
そして、ご想像のとおり、まだ機能しません。率直に言って、WSLでこれができることを望んでいます。なぜなら、それが私の好みの方法であるからです。みんな助けてください。
WSLは、Windowsホストシステムの追加のサポートと設定なしでは、真のサービスを実行できません。これは、すべての本格的なLinuxシステムにある他のサブシステムと機能の中で「init」デーモンがないためです。このような違いは、Ask Ubuntuのトピックから外れていますが、姉妹サイト Super User でお気軽にお問い合わせください。
From: WSLの実践:毎日のタスクの実行cron
なしでsystemd
を実行できます。以下のリンクをまとめましたが、スクリーンショットとともに完全なストーリーをご覧ください。
毎日同じ時間に同じスクリプトまたはプログラムを実行する必要がある場合、Ubuntuはcronコマンドを提供します。 cron
コマンドの詳細については、man cron
と入力してください。
Cronは、バックグラウンドサービスであるため、WSLで現在サポートされていません。WSLは、ターミナルウィンドウに関連付けられているプログラムを実行するように設計されています。したがって、WSL Ubuntuウィンドウを閉じると、cronデーモンを含むすべてのLinuxプロセスが閉じられます。とは言っても、ウィンドウを開いているか最小化している限り、cronジョブは引き続き実行されます。
最初にservice --status-all
と入力して、cronサービスが実行されているかどうかを確認しました。これにより、cronの前にダッシュ(「-」)が表示され、実行されていないことが示されました。
次に、service cron start
およびservice atd start
と入力して、cronおよびatdサービスを開始しました。
Cronコマンドをテストするために、次の2行を含むMyDate.sh
という名前のファイルを作成しました。
#! /bin/bash
date >> /tmp/MyDate.txt
1行目はUbuntuにBashシェルを使用してコマンドを実行するように指示し、2行目は現在の日時を/tmp/MyDate.txt
というファイルに書き込みます。次に、chmod 755 MyDate.sh
を実行して、プログラムを実行可能にしました。
次に、crontab –e
を実行して実行するcronのエントリを追加し、次の行をcrontabに追加しました。
40,45,50 * * * * /home/user01/MyDate.sh
この行は、毎日1時間ごとにMyDate.sh
を40、45、および50分実行するようにcronに指示します。
1時間待った後、/ tmp/MyDate.txtファイルを見て、指定された時間にMyDate.shが実行されたことを確認しました。最初の2つのエントリは、プログラムを手動で実行した2回のものです。
Google検索が返す スーパーユーザー の回答は古くなっています。 Microsoftは、ネイティブのバックグラウンドWSLタスクのサポートとスタートアップサービスを提供しています。この 2017年12月4日の記事 では、設定方法を説明しています。
cron
スクリプトには次の行が含まれています。
@reboot . Sudo ./xmr-stak-cpu
.
が何をするのかわからない。削除すべきだと思います。crontab -e
ジョブがルートとして実行されるため、Sudo
は不要です。./xmr-stak-cpu
は、/usr/local/bin/xmr-stak-cpu
または/home/<your name>/bin/xmr-stak-cpu
のようなものでなければなりません。