Linux

ディレクトリの作成時に有無を判別しない方法

mkdirコマンドは、既に対象のディレクトリがあるとエラーになってしまいます [farmedgeek@Mint:~]$ ls -ld /home/farmedgeek/aaa drwxrwxr-x 2 farmedgeek farmedgeek 4096 Jan 7 10:54 /home/farmedgeek/aaa [farmedgeek@Mint:~]$ mkdir /home/farmedgeek/a…

ディレクトリパスをラッピングし過ぎ問題

DIR1="/aaa/bbb/ccc/" DIR2="${DIR1}ddd/eee/" DIR3="${DIR2}fff/" DIR4="${DIR3}ggg/hhh/" CONF="${DIR2}xxx.conf" FILE="${DIR4}filename.txt" こういう 入れ子になったディレクトリパスの変数化ってメリットあるのかな?と。。 「ファイル覗きたいんやがD…

シンボリックリンクの「リンク元」と「リンク先」

いっつもわからなくなるんですが [farmedgeek@Mint:~]$ date > moto [farmedgeek@Mint:~]$ cat moto Mon Jul 6 12:08:10 JST 2015 [farmedgeek@Mint:~]$ の場合 ln -s ${リンク元} ${リンク先} なので [farmedgeek@Mint:~]$ ln -s moto saki [farmedgeek@Min…

ターミナルで実行した時と他プロセスからキックされた場合のbashの挙動が違う場合

ターミナルから叩いた時は上手くいったのに IT(結合テスト)で他プロセスからキックされたら上手く動かない。。 みたいなときって、たまーにあります。 適正なユーザでない よくあるのは「ユーザが違う」っていうケースです。 結合テストだとバッチ用ユーザ…

Permission denied の対応

「許可がありません.」とか「Permission denied.」って言われる場合 たんにファイルに実行権限がない場合は chmod でヨロシクドウゾなんですが 例えば ドットコマンド を実行した場合にコレが出た場合 [farmedgeek@Mint:~]$ . ./tmp.sh /bin/.: Permission d…

ターミナルのプロンプト表記の変更

デフォルトだとこうなってますが farmedgeek@localhost ~ $ ls -l ちょっと気に食わないので変えちゃいます .bashrc に下記を追記してください PS1='[${debian_chroot:+($debian_chroot)}\u@\Mint:\W]\$ ' こうなります farmedgeek@localhost ~ $ . .bashrc …

adduser と useradd の使い分け

結論から言うと adduser → 「とりあえずお手軽にテストユーザ作りたい場合」 対話形式で必要な情報を聞いてくれるから useradd → 「ある程度運用人数も多くて、レギュレーションが決まってるとか、スクリプトで大量に作りたい、っていう場合」 デフォルトだ…

trコマンドの落とし穴

trコマンドの落とし穴 これもう個人的な記事なんですが、、騙された感が強かったので。。 単なる文字の置換をしたいときに、簡易版sedとして重宝するtrコマンドですが 何気に文字"列"には対応していません。 $ tr abc 123 の意味するところは "abc"っていう…

bashで丸括弧を使う理由

bashで丸括弧を使うことでサブプロセスを走らせることができる bashで丸括弧が出てきて、「?????」ってなったので、調べてみました。 ./subproc.sh #!/bin/sh echo "[mainプロセスで変数に格納、mainプロセスで表示]" PROC="main" echo "PROC=${PROC}\n…

【shiftコマンド】bashで引数の数が可変の場合の処理

引数がいくつ来るか分からない場合 shiftコマンドを実行することで、シェルの引数を順に第一引数として呼び出すことができます ./shift.sh #!/bin/sh for i in `seq 1 ${#}` #引数の数だけループさせる do echo ${1} #第一引数を表示 shift #shift done 実行…

curlでHTTPレスポンスのみを表示する方法

レスポンスがないWebAPIとか、ウェブビーコンのURLを叩くときに HTTPレスポンスで成否を判断する方法ですね curl -s ${URL} -o /dev/null -w "%{http_code}\n" 例 [farmedgeek@Mint ~]$ curl -s https://www.google.co.jp/ -o /dev/null -w "%{http_code}\n"…

cron実行時のカレントディレクトリ

cronが実行されるところ cronってどこで実行されるんだろう?っていうのを知らなかったので 調べてみました。 やり方 あえて相対パスでcrontabを作成 * * * * * date >> cron.txt これでやってみたところ [farmedgeek@Mint ~]$ tail -f /home/farmedgeek/cro…

bashでoracle(SELECT)

bashでoracleに接続し、SELECT結果を利用したい bash内部で、oracleに接続して取得した結果を シェル変数に入れて使いまわす方法です。 ./select.sh #!/bin/sh MY_SYSDATE=`sqlplus -s scott/tiger << EOF set feedback off; set echo off; set flush off; s…

rsyncでディレクトリの同期

rsync ディレクトリ間の同期をとるコマンド rsync ${dirA} ${dirB} とやることで、${dirA} のファイルをまるごと ${dirB} へコピーすることができます。 scpと同様に、ホストを跨いで行うことも可能。 その場合は rsync ${dirA} ${hostname}:${dirB} で ${ho…

ssh接続できない

sshでエラーが 頻繁にログインするサーバと たまにしかログインしないサーバってあると思うんですけど 今日、後者のサーバに半年ぶりくらいにログインしようとしたら こんなエラーが出てきました。 [farmedgeek@Mint ~]$ ssh ltns_host @@@@@@@@@@@@@@@@@@@@…

ポートの開放

前回に引き続き、ポートの話です。 前回は、ポートがどうなってるかを確認するところまででしたので 今回は閉じているポートを開けるところまでやってみたいと思います。 ポートを開けるには、iptablesをいじる必要があるんですが、素人には難しい(らしい)…

ポートスキャン

開いているポートを調べる方法です nmapコマンドを使います なければ入れましょう [farmedgeek@Mint ~]$ sudo apt-get install nmap 空いているポートの一覧を出してくれます [farmedgeek@Mint ~]$ nmap 127.0.0.1 Starting Nmap 6.00 ( http://nmap.org ) a…

ヘイPATH!PATH、ヘイPATH!ヘイP・・・ナイシュー!

こないだsuコマンドを使ってるとき、同僚に「ハイフン付けた方がいいよ」といわれたので なんでかなーと思って、ハイフンを付けた時と、付けない時の違いを調べてみました。 [farmedgeek@localhost ~]$ su newcomer と [farmedgeek@localhost ~]$ su - newco…

ど、ど、ど、ど、

今日はドットコマンドについてです。 ドットコマンドとは シェルスクリプトの実行方法の一つです。 まず下記のような簡単なシェルスクリプトを書きます。 #! /bin/sh WK=$1 echo ${WK} 引数に渡した値を変数に代入して、標準出力に返すというスクリプトです…

カワイイ子にだけsudoをあげる←やめろ

最近ユーザの追加をする機会があったので アカウントの追加とsudoの設定をメモしておきます。 what is sudo? sudoはroot権限で様々なコマンドを実行できるコマンドです。Linuxサーバを運用していればどうしてもroot権限が必要な時が出てきます。 新規にユー…

黒烏龍茶

今日はcron(クーロン)について。 what is "cron"? どのスクリプトをいついつに実行させる、っていうのを登録しておくと決まった時間に自動で実行してくれる機能です。 いわゆる「バッチ」のことですね。 ユーザ毎に設定ができて、実行する際はそのユーザとし…