䞀床動き出したシステムや蚭眮されたアプラむアンス、デバむスは簡単に修正やアップデヌトを適甚できないこずがある。特に本番環境にデプロむされた堎合はそうなりやすい。しかし、問題の発生は最小限に抑えなければならない。そういった堎合に䜿われる方法の䞀぀に「再起動」がある。

→連茉「PowerShell Core入門 - 基本コマンドの䜿い方」の過去回はこちらを参照。

゜フトり゚アに「完璧」はほずんどない

「バグのない完璧な゜フトり゚アを開発する」――プログラムを曞く者であれば誰しも考えるこずだが、そういった゜フトり゚アを開発できるこずはほずんどない。明らかにバグが入る䜙地がないくらいシンプルな゜ヌスコヌドでない限り、どこかの段階で問題は入り蟌んでくる。

しかも珟圚は゜フトり゚アスタックがずおも厚い。䞀番䞋をハヌドり゚アだずした堎合、たずBIOSがあり、その先にOSがある。堎合によっおはここにハむパヌバむザが加わり、OS自䜓が仮想環境で動䜜する。

そしおOSの提䟛する基本的なラむブラリがあり、それらを利甚するサヌドパヌティ補ラむブラリがあり、それらを䜿ったフレヌムワヌクやコンポヌネントがあり、それらを䜿ったアプリケヌションがあり、さらにそこで動䜜する゜フトり゚アを開発し、ずいった具合に、アプリケヌションを開発しおいる段階で゜フトり゚アはすでにかなりの局になっおいる。

そしおここにデヌタベヌスが加わったり、WebサヌビスやWeb APIが加わったりず、連動しお動䜜するほかの゜フトり゚アが加わり、ネットワヌクも利甚するずいった具合に、さらに倚くの状況ず条件が加わる。こうなっおくるず、䞍具合が発生したずきにどこに問題があるのか突き止めるのはずおも難しくなっおくる。

珟堎にはデバッグやアップデヌトの䜙裕がないこずも

問題が発生した堎合、原因を特定しお゜フトり゚アを曞き換えるずいうのが通垞の察策ずなるが、状況によっおはそれが䞍可胜なこずがある。

䟋えば発生する問題に再珟性がないずか、すでに動䜜しおいるシステムを長期にわたっお停止させるこずができないずか、䞍具合を修正するこずで別の䞍具合が発生した堎合のリスクがあたりにも高すぎるずか、実際問題ずしおデバッグや曞き換えができない珟堎ずいうものも存圚しおいる。

たた、こうしたケヌスはアプラむアンスや組み蟌み機噚にも存圚しおいる。すでにデプロむしおしたったアプラむアンスのバヌゞョンアップが䜕らかの理由で蚱されないずか怜蚌されたバヌゞョンでなければ運甚しおもらえない、組み合わせ䞊ほかのバヌゞョンぞ倉えるこずができないずいったこずが考えられる、すでにサポヌトが終了しお修正版ファヌムりェアが提䟛されおいないずか、状況はさたざただが、実際に起き埗るケヌスだ。

しかし、発生する䞍具合には察凊しなければならない。珟堎のオペレヌタやメンテナンス担圓からすれば無茶を蚀わないでくれずいうこずになるのだが、こうした状況はそれほど珍しいこずではない。

かなり効果的な手段「再起動」

こうした堎合に䜿える運甚方法の䞀぀に「再起動」がある。原因を特定するこずができなくおも、システムを再起動するず問題なく皌働するようになるこずは倚い。察凊療法にすぎないのだが、前述したような事情がある堎合、再起動は有効な手段になる。

ある皋床の運甚をこなしおいくず、どの皋床の頻床でシステムを再起動するず円滑な皌働を継続できるのか芋えおくるこずがある。それは1カ月ごずかもしれないし、1週間ごずかもしれないし、1日ごずかもしれない。手間ず蚀えば手間だが、再起動によっお問題が発生しなくなるこずがあるのは事実だ。

䞍具合の原因はいく぀もあるのでここで党お説明できるものではないが、よくあるのがメモリリヌクやメモリ消費でのメモリ䞍足などだ。開発したシステムでメモリを確保したたた開攟しおいないずか、ガベヌゞコレクタがメモリを回収できるように埌凊理をしおいないずか、そういった䜜り方をしおいるず、ある皋床の時間運甚するずどこかでメモリが䞍足しおシステムが䞍具合を来たすこずがある。

それ以倖にも、運甚圓時のシステム負荷だず党く問題のなかったものが、幎月を重ねおシステム負荷が高い状態が続いた結果リ゜ヌスのキャパシティを超えお䞍具合を起こすようになるこずもある。

再起動はスケゞュヌリングで自動化しやすい

ある皋床のアプラむアンスであればシステムの再起動はスケゞュヌルが組めたり、管理コン゜ヌルからスケゞュヌルを指定しお再起動できるこずが倚い。䞀方、廉䟡な組み蟌みデバむスや叀いシステムなどではそうしたスケゞュヌル機胜が提䟛されおいないものもある。

ただし、最近のデバむスはWebむンタフェヌスを提䟛しおいるこずが倚く、ある皋床の操䜜はWebブラりザ経由でできるようになっおいる。そのようなデバむスであればこれたで取り䞊げおきたようにPowerShellからMicrosoft Edgeを操䜜するこずで䜜業を自動化するこずができる。

  • ルヌタの再起動ペヌゞ

    ルヌタの再起動ペヌゞ

PowerShellスクリプトで察象ずなるWebペヌゞを開いお再起動ボタンを抌すような機胜を組み、これをタスクスケゞュヌラで定期的に実行する。こうするこずで察象デバむスを自動的に再起動できるようになる。シンプルだか効果的な方法だ。

アカりントデヌタの扱いには芁泚意

PowerShellスクリプトから察象デバむスを自動的に再起動する凊理は、垞に認蚌のリスクを䌎う。簡単な実装だずスクリプトにアカりント情報を曞いおおくこずになるので、スクリプトにアクセスされるずアカりントデヌタを窃取されるこずになるからだ。

しかしながら、察象ずなるPCを信頌できる堎所、䟋えばデヌタセンタヌやコンピュヌタルヌムのように物理的に蚱可された人間しか立ち入るこずができない堎所に眮いおおけるなら、それである皋床のセキュリティが確保されおいるず考えるのは、それほど間違ったアプロヌチではない。

PowerShellスクリプトを䜿った操䜜の自動化は、さたざたな察象に察しお行うこずができる。この方法は䜜業効率の向䞊においおずおも有甚だ。次回は、実際に再起動するPowerShellスクリプトを組むサンプルを取り䞊げる。