ローカルからディレクトリ指定でファイルをアップロードするコマンドポイント
# ファイルをアップロード # -p: ファイルの更新時間、アクセス時間、モードを保持 # -r: ディレクトリを転送 # -P: 転送先ポート scp -pr -P port local/path/to/directory user@host:remote/path/to/directory
# ファイルをアップロード # -p: ファイルの更新時間、アクセス時間、モードを保持 # -r: ディレクトリを転送 # -P: 転送先ポート scp -pr -P port local/path/to/directory user@host:remote/path/to/directory
vagrant ssh
するとパスワードを求められる。/var/www/html/
とする。コメント行は先頭が「;」とします。
grep -v -e ';' -e '^$' /tmp/test.conf
面接官「ほう。得意な言語はPerlですか」
学生「はい!」
面接官「では、10000までの素数を出力してください」
学生「system "seq 2 10000 | factor | awk 'NF == 2' | cut -d: -f1"」
面接官「げぇっ シェル芸人」— ぐれさん (@grethlen) February 27, 2014
面接官「ほう。得意な言語はPerlですか」 学生「はい!」 面接官「では、10000までの素数を出力してください」 学生「system “seq 2 10000 | factor | awk ‘NF == 2’ | cut -d: -f1″」 面接官「げぇっ シェル芸人」
まあ!素敵!
あら?Perl でと出題されていますのに、シェルで解答なさっていらっしゃるようですわね。それで、面接官が「げぇっ」となってしまいましたのね!面白いですわ♪
さて、今回はこのシェル部分に注目し、各コマンドについて調べることでシェルに対する理解を深める、勉強をしたいと存じます♪
seq 2 10000 | factor | awk 'NF==2{print $2}'
最初に引用したツイートのシェル部分から最後の部分のみ変更しています。いろいろ調べていましたら、「cut」コマンドは「awk」コマンドを工夫することで省略できましたから。
さて、具体的に出力を確認しながら各コマンドを勉強してまいりましょう。その際、10000 までですと出力が多すぎますので、10 までの数で考えます。
例えば、Apache、http を監視する例。
# プログラムを定期的に実行し結果を出力 watch -n 0.5 -d 'ps auxw | grep httpd'
項目名の行、httpd、mysql、を監視する例。
watch -d 'ps auxw | grep -e USER -e httpd -e mysql'
# すべてのプロセスを詳細に表示 # a 自分以外のユーザーのプロセスも表示 # u 実行中のプロセスをユーザー名と開始時刻を含めて表示 # x 制御端末のないプロセスの情報も表示 # w 表示を拡大。無くてもよい。 ps auxw
各オプションをそれぞれ調べましたの♪
# access_log を解析して瞬間アクセスランキングを出力 cat access_log | awk '{ print $4 }' | sort | uniq -c | sort -r | less