技術メモのかけら

内容はもとより調べたことすら忘れてしまうので個人的なメモです。とにかく短く、結論だけ書いていきます。

Linux

ログインシェルが/sbin/nologinのユーザでコマンドを実行したい

通常ログインする必要がないユーザは、セキュリティのためログインシェルに/sbin/nologinが指定されている。 # grep apache /etc/passwd apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin su しようとするとエラーになってしまいます。 # su - apache …

yum の検索オプション

yum search で rpm名などキーワードから該当するパッケージを探すことができる。 # yum search yumdownloader Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp-srv2.kddilabs.jp * epel: mirror.vinahost.vn * extra…

rpmがインストールするファイルを調べる

rpm -qlp $ rpm -qlp pg_bigm-1.2.20161011-1.pg96.el6.x86_64.rpm /usr/pgsql-9.6/lib/pg_bigm.so /usr/pgsql-9.6/share/extension/pg_bigm--1.0--1.1.sql /usr/pgsql-9.6/share/extension/pg_bigm--1.1--1.2.sql /usr/pgsql-9.6/share/extension/pg_bigm--…

rpmの情報を調べる

rpm -qip $ rpm -qip pg_bigm-1.2.20161011-1.pg96.el6.x86_64.rpm Name : pg_bigm Relocations: (not relocatable) Version : 1.2.20161011 Vendor: NTT DATA CORPORATION Release : 1.pg96.el6 Build Date: 2016年10月20日 11時58分33秒 Install Date: (no…

rpmファイルの依存関係を調べる

rpmファイルを指定して依存関係を調べる方法。 rpm -qpR ファイル名 $ rpm -qpR pg_bigm-1.2.20161011-1.pg96.el6.x86_64.rpm libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) postgresql96-libs rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadF…

Bashで変数展開やコマンド置換しないでヒアドキュメントしたい

クリップボードの内容をSSHで接続した先のファイルに保存したい場合にヒアドキュメントを良く使うのですが、 ↓こういう書き方をすると、""で囲った時と同じように変数展開されたりコマンド置換されてしまい、シェルスクリプトのコピーなどでは都合が悪いです…

シェルでtrimする方法

実はechoするだけでtrimできてしまうという目から鱗。 $ S=" Hello World " $ echo $S Hello World sedやawkでやるより全然楽です。

ファイルからパターンにマッチした範囲の行を取得する

sedの場合はsed -n '/開始パターン/,/終了パターン/p' で、開始パターンにヒットした行から終了パターンの行の範囲を取得できる。 $ seq 10 | sed -n '/5/,/8/p' 5 6 7 8 awkは awk '/開始パターン/,/終了パターン/' で書けるのでこっちの方が簡単である。 $…

既に存在しないディレクトリでコマンドを実行したときのエラー

ターミナルで作業中に、カレントディレクトリが他プロセスにより削除された後でコマンドを打つとエラーになることがあります。 冷静にメッセージを見れば察しはつくのですが、余裕がない時に起きるとちょっとビックリする。 pwdコマンドは削除済みのフォルダ…

pg_dumpのZオプションで作ったファイルの解凍&リストアにいつも混乱する

pg_dumpコマンドに、 -Z 9 のようにZオプションを与えるとダンプファイルがgzipで圧縮できます。 $ pg_dump -f /mydb.sql -Z 9 mydb -F でフォーマットを指定しない場合、plain形式(要はSQLファイル)でダンプ&gzipで圧縮されるだけなんですが、なぜか私は…

ヒアストリング<<<

<<<で標準入力に価を渡せる。 echo "hoge" | commandとcommand <<< "hoge" は等価 改行を入れることも可能 $ cat <<< 'アイウエオ カキクケコ'

ファイルを掴んでいるプロセスを調べる

lsof <ファイル名>でファイルを使用しているプロセルを特定できる。 $ sudo lsof /var/log/messages COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 1055 root 3w REG 253,0 7164 100839039 /var/log/messages 実行結果の4番目のフィールドが…

awkのNF変数

awkの組み込みのNF変数には現在行のフィールド数が入っています。 $ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) $ awk '{print NF}' /etc/redhat-release 5 これを利用して、後方からフィールドを参照できます $ awk '{print $(NF),$(NF…

groupaddとuseraddのrオプションでシステムアカウントを作成する

groupaddとuseraddにrオプションを指定するとsystemアカウントになる -r, --system create a system account # groupadd -r r_group # groupadd -r r_group2 # grep r_group /etc/group r_group:x:998: r_group2:x:997: IDが振られる範囲は/etc/login.defsの…

xargsコマンドで変数を使う

-i変数名 でパイプで渡された値を変数に格納して処理できる。 gitのタグ一覧を取得してまとめて処理する実行例はこんな感じ。 git branch -r | egrep --text "tags/" | cut -d / -f3|xargs -iVAR git tag svn/VAR svn/tags/VAR

grepでマッチした箇所をハイライトする

grep --color=auto yamada /etc/passwd grepの--colorオプションを付けるとヒットした文字がハイライトされる。 どこがヒットしたか目で追うのはしんどいので大変便利です。 リダイレクトやパイプ使用時にはハイライトしないようにしてくれるので、基本 auto…

bashによく設定するsetオプション

set -u 未定義の変数を参照するとエラー・メッセージを表示する set -e コマンドが0以外のステータスで終了した場合,一部の場合を除いて即座に終了する set -C 存在するファイルに対して、>でリダイレクトしたらエラーにする

portの使用状況を確認する

すぐ忘れるのでメモ。以下のコマンドで一覧を表示できる。 lsof -i ポートを指定して調べることもできる。 lsof -i:<port_not></port_not>

systemctlの超基本コマンド

ランレベルがなくなり、ターゲットやらユニットになったりしたそうだが、 詳細はさておき、ぱっと出てこないのよく使うコメンドをメモ。 # サービスを起動させる(service httpd startの代わり) systemctl start httpd # サービスを停止させる(service htt…

ファイルをgrep置換する

sed -i "s/abc/123/g" hoge.txt Macでやるとsed: 1: "hoge.txt": extra characters at the end of commandとか怒られた挙句、ターミナルをクリックすると変な記号がコマンドラインに挿入されるようになったのでターミナルを一度落とす羽目になったけど原因は…

ヒアドキュメントの出力をファイルに書き出す

ヒアドキュメント自体たまにしか使わないし、ファイルの出力の仕方も直感的に出てこないのでメモ。 cat <<EOF > php_info.php heredoc> phpinfo(); heredoc> EOF</eof>

改行コードをCRLFからLFへ変換する

trコマンドでCRを削除すれば良い。 tr -d \\r < hoge.txt > huga.txt

CentOSのバージョン確認

メモ:CentOSのバージョン確認 # cat /etc/redhat-release CentOS release 6.5 (Final)

ファイルの文字コードを調べる

nkf --guess test.txt

シェル変数の文字列展開

パターンにマッチする文字を置換文字に置き換える 書き方: ${変数/パターン/置換文字} $ v="newItem" $ echo ${v/new/old} oldItem 先頭から文字列にマッチした部分を取り除いて出力する 書き方: ${変数#文字列} $ v="newItem" $ echo ${v#new} Item 末尾…

ファイルの拡張子を置換する

ファイルが1つだけだったらmv test{.log,.txt}のようにシェルのブレース展開を利用して行える。 mv test.log test.txtって普通の書き方と比べて楽になっている訳じゃないが、スペルミスが減るところが良いかも。 あと、ファイルが沢山ある場合はLoopを回して…

postgreSQLに接続するシェルのテンプレート

個人的メモ。 たくさんのDBにまとめて同じSQLを実行するテンプレート。 SQLをヒアドキュメントで書くようにしてるけど、長くなるようだったら外出しにしよう。 #!/bin/sh #DBサーバとインスタンスの指定 SETTINGS=("dbserv01 db01" "dbserv01 db02" "dbserv0…

大量のファイルの文字コードを一括で変更する

個人的メモ。 ワイルドカード指定でファイルの一覧を取ってきてforで回しながら文字コードを変換する。 for f in data/**/*.csv; do iconv -f MS932 -t UTF-8 "$f" > "$f.utf8"; done

CentOSのタイムゾーン変更

Jenkinsのビルドログで表示される時間がUTCなのをJSTに変更しようと思いJenkinsの設定周りを調べてみたがそもそもOSのタイムゾーンの問題だと回り回ってやっと分かった。 vagrantのboxを落としてきて、timezoneを変更せずにそのまま設定を変えずに使っていた…

ubuntuでapache自動起動設定

apachectlをinit.dへコピー $ sudo install -o root -g root -m 755 /usr/local/apache2/bin/apachectl /etc/init.d/apache update-rc.dで展開。なんか警告が出ているが、とりあえず無視。 $ sudo update-rc.d apache defaults 85 15 update-rc.d: warning: …