カテゴリー : Linux

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

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

Linux

続きを読む

[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で自宅サーバ構築

[Linux] CSV、テキストファイルなどを指定した行数で分割するコマンド

CSV ファイルを一定の行数毎に分割したいというケースがあったので Linux の split コマンドを使って対応しました。

Linux

続きを読む

[Linux] cp -a コマンドでディレクトリごとコピーする

cp コマンドでディレクトリごとコピーするオプションをいつも忘れてしまっていたのでメモ。

cp コマンドだけだとファイル単体はコピーできるけど、ディレクトはコピーできなくて、-a オプションを付けるとディレクトリ構造を保持したままディレクトまるごとコピーできます。

$ cp -a target_dir copy_dir

参考情報

Linuxコマンド逆引き大全 – 【 ディレクトリごとコピーする 】:ITpro

[Linux] Host名(hostname)の変更方法

Linux で、Host名(hostname)を変更する方法をメモ。

例として、サーバのホスト名を codenote.net に設定するとします。

/etc/hosts にホスト名を追記する

# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 
↓(追記)
 
127.0.0.1   codenote.net localhost localhost.localdomain localhost4 localhost4.localdomain4

/etc/sysconfig/network の HOSTNAME を変更する

# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
 
↓(変更)
 
NETWORKING=yes
HOSTNAME=condenote.net

ホスト名の設定を反映する

特に問題なければ、サーバを再起動しましょう。

# reboot -h now

コンソールのホスト名が気にならない場合は、ネットワークの再起動だけでもOKです。

# service network restart

以上です。


参考情報

Linuxのホスト名を変更する