Linux」カテゴリーアーカイブ

2020年1月
« 12月    
 1234
567891011
12131415161718
19202122232425
262728293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

usacloud

さくらのクラウド上のサーバを、実験・演習用に使っているけど、未使用時に起動していると課金も増えるので、極力電源を落としたい。調べると、さくらのクラウドであれば usacloud という CLI により操作ができるみたい。

同じネタを「機構管理の Azure のサーバでも極力電源を落とせ」と言われているけど、利用者のいるWebサーバなので困難。

APIキーの取得

usacloud の説明を見ているけど、API キーの取得画面の出し方が変更になっているみたい。さくらのクラウドホームにて、APIキーを発行

usacloud のインストール

usacloud のドキュメントには、

curl -fsSL https://releases.usacloud.jp/usacloud/repos/install.sh | bash

と書かれていたけど、debian の apt の GPG エラーでインストールに失敗したので、usacloud_0.31.1-1_all.deb をダウンロードし、dpkg -i *.deb でインストール。

先の手順で作ったAPIキーを登録

[root]# usacloud config
Setting SakuraCloud API Token => 
	Enter token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Setting SakuraCloud API Secret => 
	Enter secret: xxx...xxx 
Setting SakuraCloud Zone => 
	Enter zone[is1a/is1b/tk1a/tk1v]: is1b
Setting Default Output Type => 
	Enter default-output-type[table/json/yaml/csv/tsv]: json
Written your settings to /root/.usacloud/default/config.json

サーバの操作コマンド

設定が終われば、サーバの起動や停止もコマンド一発

((( サーバの起動 )))
$ sudo usacloud server boot 名前
$ sudo usacloud server wait-for-boot 名前
((( シャットダウン )))
$ sudo usacloud server shutdown 名前
$ sudo usacloud server wait-for-down 名前
((( サーバ一覧 )))
$ sudo usacloud server list
$ sudo usacloud server list -q
11xxxxxxxxxx
$ sudo usacloud server list --output-type table
+--------------+---------+-----+--------+------------+--------------------+--------+----------------+
|      ID      |  Name   | CPU | Memory | Commitment |     IPAddress      | Status |      Host      |
+--------------+---------+-----+--------+------------+--------------------+--------+----------------+
| 11xxxxxxxxxx | nitfcei | 2   | 2048MB | standard   | xxx.xxx.xxx.xxx/24 | up     | sac-xxxx-xxxxx |
+--------------+---------+-----+--------+------------+--------------------+--------+----------------+
$

VMware PlayerでLinux

授業の中で unix 環境を体験してもらうために、vmware player を使う準備

VMware Workstation Playerのインストール

Ubuntu 18 Desktop 版の起動イメージ

起動した状態のイメージを作っておきたかったが、Freeの環境では無理っぽいな。インストール作業を授業時間内にやるか…

nfsのソフトマウント

自室の Linux サーバでは、自分が管理している Azure 上のサーバのデータバックアップを取っているが、ハードディスク容量が巨大な訳でもないので、iMac に接続された Drobo (複数ディスクの改良RAID?) に保存させている。

このネットワーク越しのバックアップでのディスクアクセスになるが、iMac を時々再起動させると、その間に icinga のディスクチェック処理が走った際に、アクセスできないために df プロセスが大量に残るトラブルが発生していた。リトライするため CPU 負荷も高い状態で、一番簡単なのは サーバの再起動。(iMacを再起動したら、その後にLinuxサーバを再起動….無駄や…)

最初は、check_disk 処理で余計なところを見させないために、特定マウント先を無視するオプションを加えていたが、df がマウント先をしつこくアクセスをリトライするのが原因。

よく考えたら、ネットワーク越しのマウントだから、ハードマウント(ディスクアクセスに失敗したら何度もリトライ)ではなく、ソフトマウント(複数回リトライしたら諦める)にする必要がある。

ということで、automount オプションに、”soft” オプションを加えて解決。

MySQLでトラブル対応

仕事で動かしているサーバが動いていないとの連絡が入り、システムが動いていない。

他の方との共同のネタなので、サーバーの更新は慎重に行っているけど、今回は MySQL が落ちているのが原因。サーバーの定期的な更新作業後あたりから動かなくなっているので、最近更新されたパッケージを確認し、MySQL が含まれていたのでパッケージを一つ前のバージョンに落とそうと対応を行った。

しかしダウングレードでパッケージの不整合が出る中、無理やりダウングレードをおこなって MySQL を起動させようとするが、”mysqld got signal 11 ; This could be because you hit a bug.” といったメッセージで起動しない。

四苦八苦するも原因がつかめず、以前の状態に戻そうとバックアップ時に作成しておいたパッケージのバージョン情報を確認すると、パッケージが更新されて動かなくなったのではなく、パッケージが消されていたことが判明。原因を誤解していた。

OSの更新作業の中で、MySQL のメジャー更新で使っていたバージョンが標準パッケージから外されたみたい。メジャー更新すればいいのだろうけど、運用不安もあるので、MySQL の本家で公開しているパッケージを入れて、無事復旧。

長期運用とはいえ、更新は慎重に作業せねば。

gcj (GNU Compiler for Java) の使い方

いつもは Java を使わないけど、久々に java のプログラムの動作実験と思い、サーバ機に gcj (GNU Compiler for Java)を入れて使おうとしたら、コンパイラ javac とバイトコードインタプリタ java のつもりでコマンドを探すけど、見つからない。

gcj を見つけて “gcj HelloWorld.java” ってやってみたけど動かない。あらためて確認したら、バイトコード生成もできるし、直接機械語も生成できるけど、色々とオプション指定がいるみたい。なるほど。

// HelloWorld.java
public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}
# 機械語を直接生成する場合
$ gcj -o HelloWorld --main=HelloWorld HelloWorld.java
$ ls
HelloWorld  HelloWorld.java
$ ./HelloWorld
Hello World!

# バイトコードを生成して動かす場合
$ gcj -C HelloWorld.java
$ ls
HelloWorld.class HelloWorld.java
$ gij HelloWorld
Hello World!

プロセス状態 I (Idle Kernel Thread)

自宅のサーバの状態を見ていたら、青:sleep 灰:total の間の差が大きい。

変なプロセス走っていないかと心配したら、ps ax の出力でのステータスがIとかI< となっている項目。日本語のマニュアルを見ても意味不明。

英語のマニュアルを見たら、”Idle Kernel Thread”らしい。

緊急連絡システムのOS更新など

緊急連絡システムのOSが、Ubuntu/trusty でそろそろ、サポート期間に近づいているので、OS の更新を行った。

Ubuntu 更新

更新自体は、do-release-upgrade コマンドで、xenial に更新が進む。

$ sudo do-release-upgrade

しかしながら、openssh-server が、更新でエラーがでて、かなり悩んだ。解ってみれば、単純なミスで、自作の /etc/init.d/script を書いてあったけど、その insserv ヘッダで、ssh をコピーしてヘッダ部の # Provides: sshd の行を書き換えてなかった。

このおかげで、insserv が、ssh はすでに登録されている…と勘違いしていた。

緊急連絡システムの文字コードUTF-8 に変更

Ubuntu の更新をかけたら、php5 が使えなくなったため、php7.0 に更新を行うが、これに合わせ、取り扱い文字コードを EUC-JP から UTF-8 に変更を行った。

緊急連絡システムは、内部でデータベースを利用せず、テキストファイルですべてを管理しているが、最初は利用組織毎の設定ファイルや、データファイルをエディタでチマチマと修正を始めたけど、大量の組織のため、途中で断念。perl でファイル名や記載時のエンコーディングを修正するスクリプトを書いて一発変換。

あとは、プログラム中のエンコーディング依存の部分を修正し、送信できることを確認してひとまず移行作業完了。

Ubuntuを最新版にアップグレード(メモ)

Azure 上のサーバから、ubuntu を最新版にアップグレードするために、do-release-upgrade を実行せよとのメールが来た。Debian を使っていると、”aptitude update ; aptitude safe-upgrade”を定期的に実行して、大幅アップグレードの時には、/etc/apt/sources.list.d/* を触ってアップグレードを行っているけど、こういうプログラムがあるみたい。

管理している他のサーバは、すでに Ubuntu 16.04 xenial を導入済みで、最初に Azure を使い始めたこのサーバだけ、未だに Ubuntu 14.04 trusty 。

# lsb_release -a        # 現在の情報の確認
# do-release-upgrade -c # 更新が可能かチェック
# do-release-upgrade -s # 更新を実行

ただし、”do-release-upgrade -s” を実行したら、途中で ssh のコネクションが切れておかしくなる可能性があるから、以下のようなメッセージが表示される。Azure 上のサーバなので、1022 のポートを開けたりといった手間が必要そうだし、もう少し状況確認が必要かな。Ubuntu は慣れないなぁ…

SSH経由で実行していますが、続けますか? 

このセッションはSSH上で実行されているようです。アップグレードをSSH越しに行うことは推奨されません。アップグレードに失敗した時の復元が困難になるからです。 

続行する場合、追加のSSHデーモンをポート '1022' で起動します。 
本当に作業を進めてよろしいですか? 

続行する[yN] 

iPadでlinux仕事-Shelly Pro

仕事用の Surface Pro のキーボードがクソで、「T」の反応がダメダメなので、Bluetooth キーボードを購入。以前に、iOS,Windowsといった複数接続に切り替え可能で、接続相手に合わせてキーアサインも変更してくれる小型キーボードを購入していたけど、小さすぎてメールを打ったり、Linux サーバを触るときに、思うように打てずあんまり使わなくなっていた。

今回、Logicool の K380 を購入したけど、Mac のキーボードと同じ配列で複数のBluetooth接続を切り替えられるもの。OSに合わせてキーアサインを切り替える機能はない。

やはり、いつも使っているキーボードと同じなので、手に馴染む。それならばということで、iOS に ssh ターミナルソフト入れたら、Linux 仕事で違和感なく使えるか試したくなった。

日本語が使えるiOS用sshクライアント

以前に、ある程度日本語が使えるということで Termius という無料アプリを使っていたけど、emacs で漢字をつかっていると、文字位置がずれるので今ひとつ。

Shelly - SSH Client

今回、”iOS ssh 日本語”で検索をかけたら、この記事が比較や有料ソフトの値段なども記載してあってわかりやすかった。

最終的に入れたのは、Shelly Pro となりました。

実際に、ベッドで寝ながら複数のサーバ更新作業をやったけど、Ctrl-Caps交換ができないし、iPad は記号が英字キーボードの配置なので、キートップを確認しながらになったけど、まあまあ使える。

K380 には、iOS のキー配置も刻印されているので、便利。

ただし、iPad に入れて、”Pro” にアプリ内課金でバージョンアップ(¥600)したけど、iPhone に 同じく Shelly を入れたら、バージョンアップしようとしたら、¥480 の課金の画面が出てきた。値段も違うし、タブレット版とスマホ版は別物扱いしてるんだろうなぁ。

次の出張では、iPad mini とキーボードだけ…を試そうかな。


php5からphp7に移行

自宅サーバにて、毎朝 apache2 が止まる症状が続いた。調べてみると、php5 との相性が悪いみたい。

んで、当然ながら、他の管理しているサーバも動かないものが出てきた。ということで、職場の関連サーバも php7 に移行作業を行った。
Ubuntu(trusty) は、PHP5 で問題なし。

moodleサーバは、切り替えたら色々と表示されたな。

切り替えたら、アップロードできるファイルサイズ上限が2MBに減ってしまっていた。

(( /etc/php/7.0/apache2/php.ini ))
upload_max_filesize = 400M
post_max_size = 450M
memory_limit = 500M
# upload_max_filesize < post_max_size < memory_limit で要設定

(( apache 再起動 ))
$ sudo /etc/init.d/apache2 restart
Secured By miniOrange