カテゴリー : Linux

[Docker] Error response from daemon: Container xxx is restarting, wait until the container is running の解決方法

Docker で Error response from daemon: Container xxx is restarting, wait until the container is running というエラーが発生したときの解決方法をご紹介します。

Docker

前提

Mastodon を Linode VPS で稼働させていたら物理ハードウェア障害に遭遇して、トラブル解消後にアプリケーションが乗ってる docker コンテナがエラー出しまくって起動しなくなったとういうお話です。

続きを読む

[Ubuntu] packages can be updated や updates are security updates というメッセージが表示されたときの対応手順

Ubuntu で packages can be updated. や updates are security updates. などのメッセージがターミナルに表示されたら対応すべきことをご紹介します。

ubuntu

続きを読む

sed コマンドでファイルを上書き保存する方法

sed コマンドでファイルを上書き保存する方法を調べたので自分用メモ。

-i オプションを付けて上書き保存

sed -i -e '1d' input.txt

リダイレクト > を使った上書き保存

sed -e '1d' input.txt > output.txt
cp output.txt input.txt

どう考えても sed -i の方が便利ですね。

iconv で変換できない不正な文字を除外するには -c オプションを使えばいい

Linux 上でデータベースから出力した CSV ファイルの文字コードを UTF-8 から Shift JIS に変換しようとしたら、変換できない文字が含まれていたみたいで illegal input sequence at position というエラーが発生して処理途中で終了してしまいました。

$ iconv -f utf-8 -t sjis -o output-sjis.csv input.csv
iconv: illegal input sequence at position 652782

-c オプションをつけると処理が途中で止まることなく、不正な文字を出力から除外して最後まで処理してくれます。

$ iconv -c -f utf-8 -t sjis -o output-sjis.csv input.csv

ヘルプにちゃんと記載されてました。

$ iconv --help
Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.
 
 Input/Output format specification:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output
 
 Information:
  -l, --list                 list all known coded character sets
 
 Output control:
  -c                         omit invalid characters from output
  -o, --output=FILE          output file
  -s, --silent               suppress warnings
      --verbose              print progress information
 
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version
 
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
 
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

CSV ファイルを Excel で開くために Shift JIS に変換するなんて作業からは、そろそろ卒業したい気分です。

[Linux] タブ文字やスペースを削除するコマンドなら tr がカンタンに使えてオススメ

Linux でタブ文字やスペースを削除するのは tr コマンドに -d オプションを付けることでカンタンにできるみたいです。

# タブ文字を削除する
tr -d '\t'
 
# 半角スペースを削除する
tr -d ' '

tr コマンドは Mac でも使えるので Mac ユーザにもおすすめです。

以下 tr コマンドの使い方です。

tr  文字を一括変換する

構文
tr [Option] set1 [set2]

オプション
-c set1をset1に含まれない文字で置き換える
-d set1の文字を削除する
-s 同じ連続した文字を1文字に置き換える
-t set1をset2と同じ文字列長に合わせる
set1 文字のセットを指定する
set2 文字のセットを指定する

[Linux] 多段 ssh/scp の設定

複数のサーバを経由して ssh や scp コマンドを叩きまくるのが面倒くさいので直接 ssh/scp できる設定を .ssh/config ファイルに追加しました。

多段 ssh/scp の設定方法

設定前はローカル環境で ssh server1 した後に server1 にて ssh server2 という手順で2回 ssh していました。

# .ssh/config file
Host server2.example.com
  ProxyCommand ssh server1.example.com nc %h %p
  IdentityFile    ~/.ssh/server1_example_com.pem
  User            ec2-user

設定後は server1 を介さずに直接 ssh server2 できるようになります。

scp コマンドでのファイル転送も下記のように直接できるようになるので超便利です!

scp ~/Downloads/spam.csv server2:

複数サーバを経由して ssh や scp をする機会がある方はぜひ設定してみてください。


参考情報

ロードアベレージを理解する

load average についてちゃんと理解できてなかったので、参考になった記事をメモっておく。

naoya さんの記事にあるように 4 core の OS でのロードアベレージの見方が分かっていなかったので、こういう記事は本当にありがたい。

ドットインストールの「UNIXコマンド入門 (一般ユーザー編)」を Mac で学習するための覚え書き

ドットインストールの「UNIXコマンド入門 (一般ユーザー編)」を Mac で学習するための覚え書きです。

会社でエンジニア新人研修を担当しているので、研修資料をまとめるついでに、初学者が Mac で学ぶときに受講しなくてもいいレッスンについてまとめました。

#01 – #03 は VirtualBox などでサーバを起動させるなどの事前準備が必要なのでスキップしましょう。

残りの #04 から最後の #16 まで取り組んでもらって大丈夫です。

[Linux] dig コマンドでネームサーバーを確認する

特定のドメインのネームサーバー確認するには dig コマンドを使えばいいらしい。

dig codenote.net NS 
 
; <<>> DiG 9.8.3-P1 <<>> codenote.net NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44299
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
 
;; QUESTION SECTION:
;codenote.net.			IN	NS
 
;; ANSWER SECTION:
codenote.net.		17207	IN	NS	01.dnsv.jp.
codenote.net.		17207	IN	NS	02.dnsv.jp.
codenote.net.		17207	IN	NS	03.dnsv.jp.
codenote.net.		17207	IN	NS	04.dnsv.jp.
 
;; Query time: 2 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Sep 18 12:03:49 2014
;; MSG SIZE  rcvd: 105

dig ドメイン名 NS で確認できて、ANSWER SECTION の部分 01.dnsv.jp. 〜 04.dnsv.jp. がネームサーバーです。


参考情報

Linuxコマンド集 – 【 dig 】 ドメイン情報をDNSサーバーから取得する:ITpro

@IT:DNS Tips:digコマンドとは

screen でよく使うパターン

長時間、掛かるバッチや集計処理を動かすときに、screenを使えば幸せになれるかも。

ということで、screen でよく使うパターンを流れに沿って、まとめてみました。


何かしら時間が掛かるコマンドを実行する

  1. sshログイン
  2. セッション名を付けて screen を起動する
    screen -S samplename
  3. screen を起動できているか確認する (Attached になっていたらOK)
    % screen -ls
    There is a screen on:
            15117.samplename  (Attached)
    1 Socket in /var/run/screen/S-ec2-user.
  4. コマンド実行!!
  5. screen のセッションから一時離脱(デタッチ)
    Ctrl-a Ctrl-d

コマンドの実行が終わったか確認する

  1. sshログイン
  2. セッション一覧を確認する
    $ screen -ls
    There is a screen on:
      15117.samplename  (Detached)
    1 Socket in /var/run/screen/S-ec2-user.
  3. セッション名を指定して再開 (Attached)
    screen -r 14418.samplename

参考情報

screenコマンドを使う – インテグレイテッドシステムズ

screenに名前をつけて管理する方法。まとめ – それマグで!

デタッチされているscreenを削除する | Linuxで自宅サーバ構築