読者です 読者をやめる 読者になる 読者になる

tkuchikiの日記

Linux やプログラミングについて書きます。

ログインユーザ名を取得する

su コマンドで root になった場合などで、 ログインしたときのユーザ名を取得する方法です。 結論から書くと、logname(1) を使えば良いです。 $ ssh ec2-user@ec2-host $ whoami ec2-user $ sudo su - $ whoami root $ logname ec2-user Amazon Linux, CentO…

ec2 instance の name tag と private ip を /etc/hosts に追記する

aws ec2 describe-instances が返す json を parse して、 /etc/hosts に private ip, name tag を追記するスクリプトです(name tag を hostname としてる場合を想定しています)。 aws configure をしている前提で書いていますが、 そうでない場合は、適宜 r…

現在の shell を shellscript の中から確認する(Linux, BSD 両対応)

現在の shell(以下、current shell) を確認する方法として真っ先に思い浮かぶのは以下だと思います。 $ echo $SHELL /bin/bash ただ、これは不正解で、$SHELL はあくまでも login shell ですので、 login shell と current shell が違う場合は正しい値を返し…

find でディレクトリに symlink が含まれるときはパスの末尾に / をつけるか、-L をつける

$ tree -p /tmp/ /tmp/ ├── [lrwxrwxrwx] foobar -> /tmp/hoge └── [drwxr-xr-x] hoge ├── [-rw-r--r--] hogege └── [-rw-r--r--] hogehoge 2 directories, 2 filesというディレクトリ構成の時に、 $ find /tmp/hoge /tmp/hoge /tmp/hoge/hogege /tmp/hoge/h…

Shellscript で指定回数ループするコードのベンチマーク

Shellscript で 指定回数ループする場合を調べていたら、 while でインクリメントしていくか、for in seq の2 パターンが見つかった。 どちらが高速なのか疑問に思ったのでベンチマークを取った。 while code #!/bin/sh i=0 while [ $i -ne 10000 ]; do i=`e…

nginx で sslを設定 & オレオレ証明書の作成

ローカル環境で ssl の動作環境を構築する際のメモ。 オレオレ証明書の作成 openssl genrsa -out SERVER_NAME.key 2048 openssl req -new -key SERVER_NAME.key -out SERVER_NAME.csr openssl rsa -in SERVER_NAME.key -out SERVER_NAME.key openssl x509 -r…

Mac で cp を使うときの注意

MacでFinderからドラッグ&ドロップしてディレクトリを上書きしようとすると置き換えられてしまう。 そこで、 cp -rf src dest のように実行したところ、 まったく上書きされていない。。。 Macのマニュアルを見てみると、 COMPATIBILITY Historic versions …

BSD(Mac) で find xargs sed を使う際の注意点

ファイルを一括置換するときに、 find /path/to/dir -type f | xargs sed -i "s/hoge/foobar/g" みたいにコマンドを打つことがあると思いますが、 Macでは、 sed: 1: "/path/to/dir": invalid command code . や、 sed: 1: "path/to/dir/file": extra charac…

curl でファイルをPOST送信する方法とエラーの対処法

curlでファイルを送ろうとしたら少しハマったので、メモ。curl コマンドでファイルを送る方法は、manを見ると以下のようになっている。 -F/--form <name=content> (HTTP) This lets curl emulate a filled-in form in which a user has pressed the sub- mit button. This </name=content>…

ssh接続を鍵認証で行う際の設定

毎回ググっているので、メモしておく。 鍵作成 ssh-keygen -f ~/.ssh/example.com_rsa -t rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in …

opensslでパスフレーズ無効

openssl rsa -in example.com.key -out example.com.key 以下のように表示されるのでパスワードを入力 Enter pass phrase for example.com.key: writing RSA key 上書きするのはミスした時に危険なので、コピーしてやったほうがいいかも

指定日付以前のファイルを削除

必要になる度にググって検証して、と面倒なことをしているのでメモ。30日より前のファイルを削除の場合 find DIRECTORY -mtime +30 -name "*.sql.bz2" | xargs rm -fmtime は日単位の指定のみなので、 細かい指定をする場合はatimeを使う。 find DIRECTORY -…

Redhat系Linux に mailコマンドをインストール

yum install mail 1 packages excluded due to repository priority protections Setting up Install Process No package mail available. あれ?ない。。。 yum search してみると、それっぽいpackageを発見。 yum search . . . mailx.x86_64 : Enhanced im…