カテゴリーアーカイブ Linux

著者:杉浦

screenとshutdown

 2018/4/16本日、screenからexitするつもりがscreen中でshutdownコマンドを実行してサーバを落とす事故を起こしてしまいました。そんなわけでlinuxのscreenコマンドとshutdownコマンドについて書くことにしました。screenについてはこちらの記事こちらの記事で詳しく話されています。
screen
 screenは端的に言えば別画面を作るコマンドです。ターミナルと同じ機能を持つ別のプロセスが走り出すような感じです。
参照:SCREEN Quick Reference
よく使う操作

新たにscreenを作る screen
名前を付けてscreenを作る screen -S <name>
現在存在しているscreenをリストアップ screen -ls
指定した<id|name>のscreenに移動 screen -rx <id|name>
screenを動作させたまま抜け出す screen中でCtrl-a d
screenを消して抜け出す screen中でexit

 
shutdown
 シャットダウンを行うコマンドです。ただ命令するだけでも問答無用でshutdownコマンドが実行され出しますがコンピュータのシャットダウンが行われるまで多少猶予があります。CentOS7.4.1708のデフォルト設定におけるオプションなしの猶予は1分でした。特に覚えておきたい大事な操作は’shutdown -c’で実行できるshutdown処理の中断命令です。shutdownはCtrl+zやCtrl+cを打ち込んでも走り続けるため、シャットダウンを中止するためにはshutdown -cを入力する必要があります。一応shutdownを実行した際に「use ‘shutdown -c’ to cancel」と文面がでますが、焦り出す上に英語に親しくない私みたいな人は読み取れないことがあると思います。気を付けましょう。

  • この記事いいね! (0)
takahashi 著者:takahashi

気になる端末:GPD Pocket

持ち運びに特化したノートPC:ネットブックが一時期大流行しましたが、最近はその数をかなり減らし、タブレット型PCやキーボードと画面が分離するコンバーチブルPCが目立ってきています。

持ち運びに重点を置くのなら確かにタブレット型で、キーボードは必要な時に着ける形の方が理にかなっている気はします。ただ、個人的にはキーボードとタブレットを別々で持ち運ぶというのにもちょっとわずらわしいのでは…と思うときがあります。

やっぱり、ノートPCにはハードウェアキーボードがついていてほしい…でもかさばってほしくない….

そんなわがままを叶えてくれるのがネットブックだったので、少なくなってしまったのはちょっと残念に思っていました。

そんな中、彗星のごとく現れたのが、

中国・深センのデバイス製造メーカーGPDが発売した「GPD Pocket」という機種です。
大きさはなんと7インチという極小サイズ。電子書籍と見間違うほどの小ささなのですが、スペックはIntel Atom x7-Z8750、ストレージ128GB、RAMも8GBあります。
CPUを除けばMacBookAirとさほど変わらないスペックです。

ポートもUSB3.0、イヤホンジャック、USB Type-Cなど、主要なものは一通りそろえています。
OSもWindows 10 Home入りですが、Ubuntuも公式にサポートしている点はガジェット通な人の心をつかみそうです。

使用感はこちらのかたのブログでよくまとめられています。

7インチの極小ノートパソコン「GPD Pocket」と過ごした1ヵ月まとめ – goodegg.jp

昔は2番煎じ、3番煎じ間の強かった中華製ガジェットですが、最近は国内や主要メーカーよりもより痒いところに手が届く”一番手”なハードが増えてきた気がします。
是非今後も注目していきたいですね。

参考:
UMPCを忘れられないあなたへ 超小型パソコン『GPD Pocket』を日本でも – Makuake

7インチの極小ノートパソコン「GPD Pocket」と過ごした1ヵ月まとめ – goodegg.jp

  • この記事いいね! (0)
takahashi 著者:takahashi

Linux(Unix)のscreenの外からコマンドを実行する方法

LinuxやUnixでSSHにつなぎながら作業する際、時間のかかる処理を行わせたりでしばらく放置しておく機会と言うのはしばしばあります。

そんなときに、途中でインターネット接続が切れてしまうと最悪です。また、トラブル以外でもは会社の業務終了時間になって退社する時するなどでマシンの電源を落とさないといけない場面があったりします。

そんなときにscreenコマンドは便利です。
サーバー側に仮装のターミナルを作成し、そこで様々な処理を実行することが出来ます。
途中でSSHが切断されてしまっても、screenはサーバーの中で動作しているので、処理も続行されます。途中で処理させながらscreenターミナルから抜けることも、再度入ることも可能です。

また、スクリプトを簡易的にデーモンっぽく動作させる使い方もできます。

このscreenコマンドですが、実は外部からコマンドや文字列を与えることができるのはご存知でしょうか。

例えば、s1という名前でスクリーンを作成し、

$ screen -S s1

s1スクリーン内でpythonのプロンプトを起動しておきます。

$ python

Python 2.7.5 (default, Aug  4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

このs1スクリーンに、外からs1の標準入力に対して文字列を入力したい場合、
まず、ctrl+a d でスクリーンをデタッチした後で、

$ screen -S s1 -X stuff 'print "Hello world!"
'`echo -ne '\015'`

とした後、再度screen -r s1 でアタッチすると

>>> print "Hello world!"
Hello world!
>>> 

と表示されているはずです!

これは例えば、screenで実行中のプログラムに文字列を渡したい時や、特定のscreenでのみ定期的にプログラムを実行したいときに有効です。

予めシェルスクリプトにしておけば、cronで回すことも出来ます。
便利なので、ぜひ一度試してみてはいかがでしょうか?

参考サイト:
Minecraftサーバをscreenとcronでプラグインを使わずに自動再起動する – 純規の暇人趣味ブログ

別ターミナルで動いているscreenに外部からコマンド実行 – 戯術者の日記

  • この記事いいね! (0)
takahashi 著者:takahashi

WindowsへのMeltdown対策によるCPUベンチマークの変化をMSが公表。旧CPUでは著しい速度低下も。

先日、Microsoftが気になるデータを公表しました。

プロセッサの脆弱性、Microsoftの対策パッチでパフォーマンス大幅低下も – IT Media エンタープライズ

先日発覚したCPUの脆弱性 Meltdown/Spectre の脆弱性対策としてMicrosoftが公開したWindowsへの対策パッチを適用した際のベンチマークを比較したところ、IntelCPUの 第6世代にあたるSkylake以降は特に目立った速度低下はないものの、第4世代にあたる Haswell以前のIntelCPUは相当な減速が確認された、という内容です。
特にHaswellを含むそれよりも古いCPUを搭載したWindows Server機はかなりのスペックダウンが発生する可能性があるようです。

Skylakeが初めてIntelから発売されたのが2015年8月ごろになる(Wikipedia)ので、少なくともこれより前に発売されたIntelCPU、およびそのCPUを搭載したPCはすべてこのスペックダウンの影響を大きく受ける可能性があるということになります。

比較的新しいCPUでもスペックダウンの対象になってしまっているという点で、なかなかショッキングな内容です。
ちなみに、僕が現在所有しているマシンは一番新しいもので第5世代のbroadwellのマシンなので、全滅でした。

なお、LinuxOSにおいても影響が出ているようです。
CPU脆弱性Meltdownのパッチ適用でベンチマークスコアが25%低下した – Qiita

ここまで影響が大きいと、ゲーム用のマシンや企業向けサーバーなどののスペックダウンに各方面からの悲鳴も聞こえてきそうですね。
現にAWSでかなり影響が出ているという報告もあるようです。
チップ脆弱性の修正パッチが招いた、サーヴァーの性能低下という「二次災害」の深刻度 – WIRED

引き続き、Intelや各OSベンダーがさらなる対策を行ってくれることを祈ります。

  • この記事いいね! (0)
takahashi 著者:takahashi

Windowsが起動しなくなった時にPCからデータを取り出す方法

以前
Windowsがおかしくなった時に試したいコマンド “sfc /scannow”
という記事を書きましたが、今回はその後の話、つまりWindowsが復旧できなくなってしまった場合の対策を紹介したいと思います。
実際はsfc以外にも回復する方法があるのですが、それらもろもろを試してもダメだった場合、初期化が必要になってきます。

幸いなことに、Windows8以降のOSではなるべくファイルを残した状態でOSを再インストールするオプションがあるので、通常はこれでほとんど治ります。

Windowsのリフレッシュ(一部初期化)とリセット(完全な初期化)は下記を参照ください。
第8回 Windows 8によるPCの「リフレッシュ」と「リセット」 – @IT
Windows10 「PCのリフレッシュ」「PCの初期化 (リカバリー)」をする方法! – Mecha log

そもそもリカバリすらできない、あるいはリカバリする前に念のためデータをバックアップしておきたい、といった場合は、HDDを取り出して正常に起動するPCに繋げるか、外部からOSを直接起動することができれば可能になります。

実は世の中にはCDやDVDから直接起動することができるOSが複数種類存在します。

もしDVDを作成する機能のあるPCを使っている場合は、Ubuntuがおすすめです。

Ubuntu Japanese Team – Ubuntu

Ubuntu 14.04 インストールDVDの作成 – 根気だけでパソコンを征服しようとする隊長の備忘録

そもそもディスクドライブがない!という方はUSBメモリへインストールすることもできます。

さまざまなOSのインストール“USBメモリ”を手軽に作成できる「UNetbootin」- 窓の社

一度OSが起動すればあとはWindowsと操作は同じです。
PCに内蔵されているHDDを開き、必要なファイルを別のUSBメモリやHDDへコピペすることができます。

詳しい操作方法はこの辺りを見ていただければわかりやすいかと思います。

Ubuntu ウブントゥでデータ救出

GUIのわかりやすい画面でファイル操作ができると、かなり安心感がありますね。
困った際は是非試してみてはいかがでしょうか?

  • この記事いいね! (0)
takahashi 著者:takahashi

NginxでBASIC認証をプロキシするときの注意点

今回。hamamatsu-gnss.orgのサーバー切り替えを行ったのですが、移行先サーバでサービスの再起動後何故かBASIC認証が通らなくなる問題が発生。
80番ポートはWebページとポートを共有しているので、webサーバーとntripサーバーの前にNginxを置いて、ドメインで通信を振り分けています。
旧サーバーでは問題なく動いていたのですが、まったく同じ設定をコピーした新サーバーでは、RTKLIBからntripへ401ステータスで接続できなくなってしまいました。

ちなみに直で新サーバー側のntripへ接続すると、認証も問題なく通り、ログにも異常は見られなかったので、原因がNginxなのは間違いなさそうです。

認証の要らないsourcetableはNginx経由でも問題なく表示できたため、恐らくBASIC認証の際に必要なヘッダ情報が渡せていないのだろうと推測しました。
そこでいろいろ調べてみると、参考になりそうなサイトを発見。

Nginx を認証プロキシとして使う – Docker-docs-ja

正常にプロキシするには

      proxy_pass                          http://example.com;
      proxy_set_header  Host              \$http_host;   
      proxy_set_header  X-Real-IP         \$remote_addr; 
      proxy_set_header  X-Forwarded-For   \$proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto \$scheme;

の記述が必要だったのですが、新サーバーの設定ファイルと見比べたところ

proxy_set_header  X-Forwarded-Proto \$scheme;

の記述が抜けていることがわかりました。
この一行を追記し、Nginxをリロード、もう一度試してみると…

無事接続できました!

Nginxはプロキシする際、バックエンドへ渡すヘッダー情報を自由に指定・編集することができるので、抜けがあると今回のようなことが起きます。
Nginxでシステムを構築した際は、こういう部分も気を付けてチェックしたいですね。

いやーしかし、今回は症状がちょっと奇妙だったのでちょっとだけ焦りました…(笑

  • この記事いいね! (0)