Powershell でWindowsのサービスを強制的に再起動する

ときどきWi-Fiが使えなくなるときがあり(電波アイコンに赤いバツがつく),wlansvc サービスを再起動しようにもSTOP_PENDING状態で固まることがあった. なのでwlansvcを強制的に再起動するためのPowershellスクリプトを書いてみた.

あくまで応急処置であり,根本的解決策ではない.wlansvcが突然固まる原因は一体…(´・ω・`)

再起動したいサービス名を調べる

Get-Service を引数なしで実行することでサービス一覧が表示される.後のコマンドではNameカラムに表示されるサービス名を使用する.

PS C:\WINDOWS\system32> Get-Service

Status   Name               DisplayName
------   ----               -----------
Running  AdobeARMservice    Adobe Acrobat Update Service
Running  AESMService        Intel® SGX AESM
Running  AGSService         Adobe Genuine Software Integrity Se...
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Running  Appinfo            Application Information
Running  Apple Mobile De... Apple Mobile Device Service
Stopped  AppMgmt            Application Management
Stopped  AppReadiness       App Readiness
Stopped  AppVClient         Microsoft App-V Client
Running  AppXSvc            AppX Deployment Service (AppXSVC)
Stopped  AssignedAccessM... AssignedAccessManager サービス
Running  AudioEndpointBu... Windows Audio Endpoint Builder
Running  Audiosrv           Windows Audio
// snip //

PIDを調べる

Get-WmiObject コマンドを使ってWMIから調べる.Filter引数はSQLのWhere句のように書ける. %ワイルドカード

PS C:\WINDOWS\system32> Get-WmiObject -Class Win32_Service -Filter "Name LIKE 'wlan%'"


ExitCode  : 0
Name      : WlanSvc
ProcessId : 13564
StartMode : Auto
State     : Running
Status    : OK

PIDを抽出する

上記のようにサービスの詳細が出力できたら,あとは文字列加工をするのみ. Linuxでいうgrepコマンドにあたる findstr コマンドでProcessId 行のみを取り出し,cutコマンドの代わりに ForEach-Object コマンド(省略形: %)と split演算子を組み合わせてPIDを抽出する.

PS C:\WINDOWS\system32> Get-WmiObject -class win32_service -filter "name='wlansvc'" | findstr ProcessId | % {$($_.split(":"))[1]}
 13564

サービスを強制停止&起動

taskkill.exe /F /PID $WLANSVC_PID
Start-Service -Name wlansvc

スクリプト

gist.github.com

参考

僕の私のまあやお姉さん

この記事はまあやお姉さん Advent Calendar 2016 - Adventar16日目の記事です。

前回の記事は逆に今。まあやお姉さん。15でした。

さて,今回は番外編です.ゆーき大先生(id:yu_ki_kun_0)のレビュー記事を楽しみにしているみなさまには大変申し訳なく思います.

何を書こうか

この記事では,番外編として適当にまあやお姉さんの思い出を綴っていこうと思います.

続きを読む

ああ、なんくるねぇな

これは声優 Advent Calendar 2016 3日目の記事です。 昨日はyu_ki_kun_1さんの逆に今。まあやお姉さん。2 でした。

今回は沼倉愛美さんについて書こうと思います。 持っている感情を言葉にするのが難しいので、好きになったきっかけを淡々と思い出していきます。

はじめて知った日

なにも知らない私が声優さんに興味を持ち始めた2年前、まんがタイムきららフェスタ2014というイベントに参加したのがはじまりです。

元々は早見沙織さん目当てで恐る恐る参加したんですが、早見さん以外の声優を知らない自分にとって「声優さんっていいな…!」と思わされたイベントでした。

開演、そしてキャストの登場。いろんな声優さんが並ぶ中で「お…?頭にひまわりの髪飾り、赤いメガネ…とても綺麗な方がいる…」

その方が、沼倉愛美さんでした。

好きになったきっかけ

きらフェスのときはただその存在を知った程度でした。 ぬーさんについて本格的に興味を持ったのは今年の7月頃。 大学4年になり研究室に配属され、アイマスPである先輩からの執拗な洗脳布教活動によりアイマスに触れるようになりました。

ゲームやって、アニメを見て、ライブを見て…

あるときティンと来た瞬間がありました。 YouTubeに上がっていたアイマス10th BDの販促映像。ダイジェストなのになぜ30分もあるのか…と思いつつ眺めてると、序盤で水鉄砲を撃ちまくるぬーさんの姿が。

曲は楽しいし、会場も楽しそうだし、改めて意識した瞬間でした。

ニコ動とかで動画を漁ってると、765メンバーの末っ子キャラであったり不憫な扱いを受ける(そしてそれを悲しげに口にする)ぬーさんを見て、どこかギャップにやられたような気がします。

それ以来、ぬーさんが出演されてるアニメを少しづつ追いかけているところです。

好きなところ

アイマスの中でぬーさんが演じる我那覇響というキャラクターは、ポジティブで自信家で、その自信家ぶりから油断してドジをやらかすことがある面白いキャラクターです。 この長所と短所を表現するぬーさんの演技が個人的にツボです。 さっと例を挙げると「ふふーん♪」と「うぎゃー!!」とか。

また別作品では、"だがしかし"のサヤ師。 印象に残ってるのは、幼なじみであり小さい頃から恋心を抱くココノツとお祭りで一緒に歩くシーン。 単純に縁日を楽しむところもそうですが、やっぱり恥ずかしそうに照れながらココノツに話しかけるところが個人的にツボです。 あとこれ (http://www.nicovideo.jp/watch/sm28354656) がすき。

"蒼き鋼のアルペジオ"のタカオ。そしてTrident. もっと早く出会いたかった。 気高い雰囲気のキャラでありながら、ネタシーンでは気持ちのいいツッコミを入れるところが良いですね。アニメ10話は大号泣でした。

"魔法少女育成計画"のリップル。 ぬーさん曰く、リップルは9話からが本番だそうです。生きてくれ。

アニメ以外でも、ラジオや動画配信で見る・聴く姿はそれはまた素晴らしく、竹達彩奈さんとやっている初ラジでは「なんでこんな無防備な感じなんだ…」と思ってしまうような自由っぷりが楽しめます。

いろいろありすぎて書ききれない…のでここまで。

アーティスト活動

ぬーさんは11月にアーティストデビューされましたね。

1stシングル「叫べ」には3曲入っているんですが、すべて違った表情の歌なのです。 「叫べ」は感情をぶつけるような曲。「言の葉」は穏やか。「HEY!」ははしゃぐ曲。

特に「HEY!」に関しては、途中で「ふふっ」って囁き声が聞こえるんですけど、私はそこで息が絶えました。

東京で行われた握手会に行ってきたのですが、ふわっとした柔らかい手に感激したあまり、何も言えなくなってしまったのは良い思い出です。 横浜で行われたファンミーティングでのお渡し会ではちゃんとお話できてよかった…。

"とある撮影"と言われていた2ndシングル「Climber's High!」のMV撮影では、アー写と同じ姿のロックンローラー沼倉がライブハウスで大暴れしてました。 最後のテイクが始まってイントロが流れて、気合いが入りすぎた結果マイクを落とし恥ずかし笑いをするロックンローラー。これがすごい印象的でした。 CDもMVも楽しみです。

まとめ

好きという感情を言葉にして表すのはとても難しく、一言で魅力をまとめると

「良いんだよ…」

になってしまう私を許してください。

(すごいだらだらと書いていたら12/3を過ぎていました。ごめんなさい。)

"GDK_BACKEND does not match available displays"が出てX転送に失敗したときの確認事項

症状

タイトルの通り、SSH先でX転送しようとして GDK_BACKEND does not match available displaysとエラーが出た。 $DISPLAYという環境変数も空の状態。

[user@remote ~]$ firefox
Error: GDK_BACKEND does not match available displays
[user@remote ~]$ echo $DISPLAY

[user@remote ~]$ 

環境

  • リモート側OS: Arch Linux
  • OpenSSHのバージョン:openssh 7.3p1-1
  • ローカル側OS: Windows10
  • 使用クライアント: MobaXterm v9.1

sshd_configの設定確認

/etc/ssh/sshd_configに以下のオプションを追記する。

X11Forwarding yes

sshdを忘れずに再起動する。

[user@remote ~]$ sudo systemctl restart sshd

再ログイン

一度ログアウトし、再度SSHログインする。 $DISPLAY変数に情報が格納されるようになった。

[user@remote ~]$ echo $DISPLAY
localhost:10.0

これにて解決。

Pacemaker + Corosync on Ubuntu 14.04でHAクラスタを構成する

Ubuntu 14.04でPacemaker + Corosyncを用いてHAクラスタを組んでみたのでメモ。

Pacemakerとは

Linux-HA Japanさんが日本語情報をまとめています。

ざっくりいえば、

  • Pacemaker... アプリやノードやネットワークといったリソースを監視
  • Corosync... ノード同士を接続してクラスタを形成

という感じでしょうか。 歴史は以下のページに。

第1回 Pacemakerの歴史を見てみよう!:Pacemakerでかんたんクラスタリング体験してみよう!|gihyo.jp … 技術評論社

この記事で書くこと

  • PacemakerとCorosyncをインストール
  • Corosyncの初期設定(ノード同士が繋がるのを確認するところまで)

リソースの設定などは書きません。

参考にしたURL

環境

  • Ubuntu 14.04がインストールされたサーバ x3
    • 適当なサーバ2台以上あればOK

インストール(全ノード)

ClusterLabsのQuickStartを参考にやっていきます。 まずはaptを使ってインストールしていきましょう。

# apt install pacemaker corosync fence-agents

Corosyncの設定(全ノード)

クラスタ制御ツールCorosyncの設定をしていきます。 /etc/corosync/corosync.confに追記した部分は以下の通り。

# editor /etc/corosync/corosync.conf

totem {
...
        cluster_name: mycluster
        transport: udpu
        interface {
                ...
                bindnetaddr: 198.18.249.0
                ...
        }
}
...
quorum {
        ...
        two_node: 1
        wait_for_all: 1
        last_man_standing: 1
        auto_tie_breaker: 0
}
...
logging {
        ...
        debug: on
        ...
}
nodelist {
        node {
                ring0_addr: controller-ha
                nodeid: 101
        }
        node {
                ring0_addr: compute01
                nodeid: 102
        }
        node {
                ring0_addr: 198.18.249.121 
                nodeid: 103
        }
}

ポイント

  • bindnetaddr: 198.18.249.0
    • クラスタ間通信に使用する(Corosyncがバインドする)インターフェースに設定されているネットワークアドレス。
      • 自分のIPアドレス192.168.0.100/24であれば192.168.0.0と入力。
  • ring0_addr: controller-ha
    • ring0_addrの値にはIPアドレス or 名前解決可能なホスト名を入力。
  • nodeid: 101
    • 1つのノードに一意の番号を割り当てる。nodeidが被っているとクラスタが組めない。

この設定を全ノードに行います。1つのノードで設定して他ノードにコピーすればいいのか。

起動(全ノード)

Corosync起動→Pacemaker起動の流れ。

# corosync
# service pacemaker start

なぜかservice corosync startが何も反応なく、しかたなくプログラムを直接実行するという。。。 CorosyncがうまくいかないとPacemakerは落ちます。

クラスタ確認

本当にクラスタが組めているか確認します。操作はどれか1つのノードで行います。

# crm_mon
Last updated: Sun Dec 13 11:44:44 2015
Last change: Sat Dec 12 16:17:24 2015 via crm_attribute on controller-ha
Stack: corosync
Current DC: controller-ha (101) - partition with quorum
Version: 1.1.10-42f2063
3 Nodes configured
0 Resources configured


Online: [ compute01 198.18.249.121 controller-ha ]

設定したノードがすべてOnlineとなっていればOKです。

おまけ:Pacemakerのログを出力する

ログはdebug出力してほしい…君のすべてを知りたい…ということでおまけです。 (すべてを知りたければソースコードからお付き合いでしょうか。あるいは開発者と仲良くなることでしょうか。)

Pacemakerのログレベルについては/etc/default/pacemakerを編集することで設定できます。例によって変更点のみ。

# editor /etc/default/pacemaker
export PCMK_debug=yes
export PCMK_debugfile=/var/log/pacemaker.log
export PCMK_logpriority=debug

PCMK_logpriorityはなんとなく設定しましたが、syslogに出力するログレベルなのでなくてもいいかもです。

おしまい

「Corosyncの設定を全ノードしなきゃいけないの?スケールアウトするとき大変だ…」という人にはpacemaker-remoteというものもあります。 肝心のリソース設定は他の記事にお任せします…と思ったけれど、大体がCentOSでやっていてUbuntuでの日本語記事ってあんまりない気がするので、そのうちApacheのHAの設定やってみます。

ボーイミーツガール

こんにちは。

これは

この記事はwhywaita Advent Calendar 2015 12日目の記事です。 昨日は id:neotaso さんの 第1.0羽 「ひと目で、尋常でない第1羽と見抜いたよ」(Advent Calendarの記事) - neotaso’s blog でした。私は青山さん?という女性がすきです。あとは1羽のお風呂シーンで登場する"でっていう"ニキもすきです。

はじめに

このアドベントカレンダーのほとんどは、whywaita氏の良さを紹介するものか、氏に関係ない記事になるだろうと思っています。

せっかくなので彼に対する恨みつらみ妬み嫉みとかあることないこと適当に書いてみようと思います。

whywaita 女の子説

インターネットのみなさん、whywaitaという人間はおそらく女の子です。

私が彼を女の子と呼ぶにはいくつか理由があります。

1. にゃーん

(ツイ略)
女の子がいうとかわいい。
女の子がいうとかわいい。。。
でも「にゃーん」がありなら、犬っぽく「クゥーン」とか言ってもかわいいとおもいますよ、まる。

2. 手を振る

現実世界で彼と会うと、まず手を振ってくれます。 知人を見つけると皇族ばりに手を振ります。 相手がそれに気付かないと「気付いてくれなかった・・・」と寂しそうにつぶやきます。

3. 字がきれい

とても字がきれいです。読みやすいです。字が丸っこくてかわいらしいです。
ラブレターでも書かれたらおしまいです。要注意です。

4.「もっとお話したいなー」

なんか細かい部分は忘れましたが、ときどき「お前は彼女か!?」とツッコミを入れたくなるときがあります。
彼が姫だとしたら囲ってる男子はみなコロッと落ちてしまいます。危険です。

5. 女性声優の真似をする

whywaitaは女性声優の演技をシャドーイングします。早見さんのラジオのジングルをシャドーイングするのやめてください。怒りますよ。

6. 女の子役が得意

男を落とすテクニックを所持。

www.slideshare.net

というわけで

whywaitaは女の子です。
なんか他にも書こうとしてたことがあったような気がする。カラオケいくと低い音域から高い音域まで出るとか。ダイエットしろとか。痩せないとインターネッツ取り上げるぞとか。まあいいや。おしまい。

July Tech Festa 2015に行ってきました

JTF2015 (July Tech Festa) に行ってきました。

自分はお昼から参加しました。参加費1000円(早割だと500円)でフリードリンク、お菓子食べ放題、お弁当支給(ハンバーグ弁当とかタコライスとかいろいろあった)。非常に素晴らしいサービスでした。

どのセッションもとても興味深かったです。もっといろいろ見たかった。

以下、セッションのメモ。

Modern DevOps with Mackerel

by はてなCTO 田中さん

DevOpsとは?

CommunicationやCollaboration

  • アプリケーションエンジニアとインフラエンジニアの協調作業

チームの仲が悪くなる

  • それぞれがそれぞれの目標に最適化されてしまっている
    • 同じ目標に向くことが大切

Integraton, Automation, Measurement

  • 脱職人技*脱属人性
  • 効率向上
  • 再現を容易に
  • 誰かがやったことをそのまま再現できると、脱属人性につながる

Modern DevOpsとは?

  • 高速なテスト、デプロイ
  • インフラの自動化と効率向上
  • Immutable Infrastructure
  • Infrastructure as Code
    • 各社様々な取組

インフラの自動化と効率向上

  • 構築(新規、変更)あれいれたい!減らしたい!
  • 観測、監視

ここ2,3年で流行してるのが、下の2つ。

Immutable Infrastructure

  • できるだけサーバに状態を持たせない。
    • 可能なものと不可能なものがある。不可能な例→DB
    • Immutableにできれば考えることが減る。
  • 簡単に作り直せるように
  • The Twelve-Factor App(Heroku)の考え方

Infrastructure as Code

  • インフラの設定をコードで管理
    • 長いスパンでサーバを管理するには必須になってくる。

インフラ構築の道具

  • プロビジョニング
    • ansible/chef/puppet
  • CI
    • serverspec
  • デプロイ

デプロイの高速化

  • CIの活用
    • Jenkins/CI環境でイメージを自動作成
  • Docker, AWSならamiを用意しておくことで容易にデプロイ
  • ChatOps
    • チャットツールを中心としたオペレーション
      • Slackなど
      • bot活用
    • 誰がどういう作業をしているかわかる
    • ただしチャットツールが落ちると仕事が出来なくなったりする。github落ちても…

Staging環境への自動デプロイ

  • 自動デプロイ
    • git pushトリガでproxy設定まで自動化
  • 自動停止
    • ゴミを残さない

インフラ状態の一元管理

Mackerelとは

インフラの状態をAPIで取得可能

  • ホストの状態の更新はPOSTで出来る

tmux-sshでまとめてssh

  • APIを組み合わせて、一発で複数サーバにログインできる

Capistrano連携

  • deploy.rbにIPアドレス等をハードコーディングしなくていい

Ansible Dynamic Inventory

Webhook+hubot

  • アクションの自動化
  • アラート→再起動、など

AutoScaling

  • mackerle-agentを組み込むと自動的に反映される

監視ルールAPI

開発ツールクラウド

実行環境もクラウド

  • AWS、GCEなど

運用ツールクラウド

  • infrastructure as codeの推進
  • インフラの一元管理DBとしてのMackerel

ひしめき合うオープンソースPaaSを徹底解剖! PaaSの今と未来

by PaaS勉強会 草間さん

OpenPaaS

Cloud Foundry

  • VMwareOSSとして公開(2011年)

    • Public PaaS
      • IBM Bluemixなど
      • NTT-Com Cloundn PaaS
    • Private PaaS
  • DEMO

    • phpファイルをCloud Foundry上にデプロイ
    • $ cf push <app-name>
  • 別のPaaSサービスに向ける

    • $ cf api <APIサーバ>
    • 今回はcloudnからbluemixにAPIを変更した。
  • スケールも簡単

    • $ cf scale <app-name> -i <count of instance> -m <memory size>

CFのメリット

  • ベンダーロックインが防げる
  • たくさんのベンダーさんがサービスを提供している

CFのデメリット

  • オンプレにCFのデプロイが死ぬほど大変(1日かかったり)

  • Dockerは使えないの?

    • CFはDocker使ってない。次期バージョンでDocker imageサポート。
  • Dockerが使えるPaaSはないの?

    • OpenShift

OpenShift

  • RedHatが開発
  • OpenShift v3...Docker PaaSとして生まれ変わった。今までを捨てた。
  • KubernatesをコアにしたPaaS
    • Kubernatesの開発にRedHatが深くかかわっている。Kuberの概念を取り込み
  • JSONでいろいろ定義。長い。その分いろいろ設定できる。
  • Webhookにも対応。これはPaaSの中ではOpenShiftのみ。
  • 開発早い。
  • KubernatesをコアにしていてPaaSっぽさがない?

Deis

  • Docker + CoreOSをベースとしたPaaS

  • DEMO

    • $ deis create
      • git上にリモートrepoが設定される。
    • $ deis scale web=5
      • スケーリング
  • herokuライク。
  • スケジューリングが遅い。

Flynn

  • Docker PaaS
    • Heroku CloneのDokkuの開発者も関与
  • DEMO
    • $ flynn create
      • git上にリモートrepoが設定される。
  • Heroku互換のBuild Packを使ってる

  • メリット

    • シンプルかつモジュラーでカスタマイズしやすい
    • スケジューリングもDeisよりはやめ
    • スケール早い(3→5台で、2.2秒)
  • デメリット
    • 開発の継続力に不安
    • どこまでメンテし続けられるか
    • スケジューラが賢くない(デプロイ先をランダムで決める。ただその分早い)
  • 開発はほとんどGo。流行り。

4つ見てみて

  • どれも似たり寄ったり。
  • なんで?
    • "12 Factor App"というベストプラクティスがある。どのPaaSもこれを前提にしている。

PaaS使いたいなら

  • まずはPublic PaaS
  • Private PaaS構築は?

    • あまり実例ない。
    • 準備が死ぬほど大変。
    • 自由があまり効かない。
  • 優れた仕組みを積極的に取り入れていくのは大切。

    • Docker
    • 構成管理ツール
    • Fluentd
    • など
  • ただ規模が大きくなるにつれ複雑になり、メンテが出来なくなってくる。引継ぎコストも無視できなくなる。
  • 自前で似たような構成を作るならOpenPaaSを採用してダクトテープ(継ぎはぎのテープ)を捨てませんか。

OpenPaaSの未来

  • ネットワーキングの強化
    • あらゆるサービスの「ハブ」に