元WEB・サーバーサイドエンジニアだった私が、
人事総務部の業務でも cron で 簡易なシェルスクリプトは動かしておきたい!
でもサーバー立てるまでもない!費用もかけたくないし、社内審査の通ってない社外のプログラムも入れたくない!
そんな欲張りな欲求をかなえてくれる素敵な環境「WSL2」を知ったものの、
せっかくならエンジニアでなくても、迷わず1本道でマネできる手順を残しておきたいと思い立ち、記事を執筆しました。
WSL2 環境構築と、最低限PCの電源が入っていれば、あとは自動で cron が動くところまでの設定を、
最短手順書としてまとめ公開します。
(2023年6月執筆)
How to Install
(1)Windows サブシステムオプション機能有効化
管理者として Windows PowerShell を開き、以下を実行。
1 |
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart |
(2)Windows 仮想マシン機能有効化
管理者として Windows PowerShell を開き、以下を実行。PC を再起動するかどうか問い合わせがあるので、Y を入力。PC が自動的に再起動。
1 |
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all |
(3)WSL2 用 Linux カーネルのインストール
最新のパッケージ「wsl_update_x64.msi」を入手。公式サイト「 Microsoft Learn 」:以前のバージョンの WSL の手動インストール手順ー手順 4 – Linux カーネル更新プログラム パッケージをダウンロードする
「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をクリックすると msi ファイルが落ちてくるので、
ダブルクリックして実行。
管理者特権のアクセス許可が出るので「はい」。
(4)WSL 2 を既定のバージョンに設定
Linux ディストリビューションをインストールする際に、デフォルトで WSL2 を使うように設定。Windows PowerShell を開き、以下を実行。
1 |
wsl --set-default-version 2 |
(5)Linux ディストリビューション「Ubuntu」の入手とインストール
安定版、Ubuntu 20.04 を入手します。当社は企業ネットワークポリシーにて、Microsoft Store の使用が非許可のため、手動でインストールします。
公式サイト「 Microsoft Learn 」:以前のバージョンの WSL の手動インストール手順ーディストリビューションのダウンロード
上記にて「Ubuntu 20.04」をクリックすると、AppxBundle ファイルが落ちてくるのでダブルクリックして実行します。
「準備ができたら起動」にチェック入れたまま「インストール」。
(6)ユーザー設定
初回起動時に Ubuntu 用ユーザIDとパスワードを設定して、インストール完了ここで入力するユーザ名はWindowsのユーザ名とは関係ないものの、自身の苗字等にしておく。
(例:熊谷なら kumagai 等)
root権限が必要な場合は、sudoで実行できる。
(7)Windows ターミナルをインストール (省略可能)
Windows PowerShell や コマンドプロンプト、そして今インストールした Ubuntu を、一緒くたにタブ区切りで操作できる Microsoft 謹製「Windows ターミナル」がとってもおすすめです!
Microsoft GitHubリリース ページ:Windows Terminal v1.17.11461.0 Latest
上記にて「Microsoft.WindowsTerminal_1.17.11461.0_8wekyb3d8bbwe.msixbundle」をクリックすると、msixbundle ファイルが落ちてくるのでダブルクリックして実行します。
「準備ができたら起動」にチェック入れたまま「インストール」。
起動すると、デフォルトで Windows PowerShell が開くようになっています。
※もしうまくいかない場合は、少し古いバージョンをお試しください。
Microsoft GitHubリリース ページ:Windows Terminal v1.14.228
(8)WSL2 の自動起動設定
PC をシャットダウンしたら当然 WSL2 も落ちるわけですが、PC の電源を入れたら、自動で WSL2 が起動しているように設定しておかないと cron も動きません。
Ubuntu の実行ファイルへのショートカットを作成し、Windows のスタートアップフォルダに配置します。
a. 「Windowsキー + R」で「ファイル名を指定して実行」を開き「 shell:startup 」と入力し、OK
b. スタートアップフォルダが開くので、右クリック「新規作成」>「ショートカット」。
c. 「項目の場所」に以下入力し「次へ」。
名前の変更の必要はないので「完了」でショートカット作成完了。
1 |
C:\WINDOWS\system32\bash.exe |
(9)WSL2上での、cron自動起動設定
WSL2 が起動したら cron も自動起動してほしいですが、cron 起動には管理者権限が必要です。つまり sudo コマンドがパスワード入力なしで実行できるようにしておく設定が必要。
(個人 PC へのログオンが前提ではありますが、パスワード無しのリスクは認識ください)
まず sudo のパスワード入力を不要にします
a. Ubuntu コンソールを開き以下入力。GNU nano エディタが起動します。
1 |
sudo visudo |
b. 「%sudo ALL=(ALL:ALL) ALL」と書かれた部分に方向キーでカーソル移動し、先頭に「# 」(半角シャープと半角空白)を追加し、次の行に以下追加。
1 |
%sudo ALL=(ALL:ALL) NOPASSWD: ALL |
c. 「Ctrl + x」を入力、「y」を入力、「File Name to Write: /etc/sudoers.tmp」と表示されたら「Enter」で保存終了。
続いて cron を自動起動する設定(root権限での実行とします)
a. 引き続き Ubuntu コンソールにて、以下1行ずつ実行。
1 2 |
sudo su - echo -e "if ! service cron status > /dev/null 2>&1\nthen\n sudo service cron start > /dev/null 2>&1\nfi" > ~/.bash_aliases |
(10)cron 動作確認
ここまでの設定により、PC を再起動しても自動で WSL2 環境が起動し、かつ cron も自動で動き始めているはずです。
PC を再起動し、Ubuntu コンソールにて、 以下1行ずつ実行し「 * cron is running」と表示されたら成功です。
1 2 |
sudo su - sudo service cron status |
HRアナリティクススペシャリスト。駆け出しは国産ケータイのメーカーサイトディレクションより。WEBエンジニアの道を志向しSIerに転職。Javaサーバーサイドを足掛かりに、インフラもフロントも幅広く対応するジェネラリストへ。前職でソーシャルゲームのタイトルメインエンジニアを歴任後、エンジニアの採用/評価/育成/配置を預かるエンジニアマネージャに抜擢。以降は人事と経営をデータからバックアップするHRアナリティクス特命担当マネージャに転進、現業はエンゲージメントやストレス状態のデータ集積や可視化、対策提言。