忘れないための覚え書
主にUNIX関連のコト。時々関係ないものも…。

  1. ログアウトしてもプロセスを動かしたい。
  2. cronで自動運転
  3. sendmailのモードいろいろ
  4. psに現れた特定の文字列を持つプロセスをみんなkillしたい
  5. tar.gzファイルを一思いに展開
  6. UTPクロスケーブルとストレートケーブルの製作
  7. .netrcを使って自動ftp
  8. Solarisをネットワークにつなぐ
  9. Solarisの育成


【ログアウトしてもプロセスを動かしたい】

nohup <command> &

これで、バックグラウンドで動作しつつ、ログアウトしてもプロセスが死なずに済みます。
でも、セミコロンで区切って複数のコマンドを繋ぐと、nohupが効くのは最初だけなので注意。

それと、コマンドを実行したカレントディレクトリに、コマンドのSTDOUTをトラップした nohup.out っちゅーファイルを作るので、これも要注意。
気がついたら nohup.out がバカでかくなってディスクfull…なんてことにならないように。



【cronで自動運転】

とにかくcronにタイマー起動プログラムをセットする方法。
 

1:既に crontab に登録されているかどうか、crontab -l で確認。
2:どっかに crontab というディレクトリがあるので探す。
3:crontab -eで普通はcrontabの編集ができる(はず)。crontabと入れるだけで、プロンプトもなく入力モードになるやつもある。
4:crontab -eがだめなら、crontabディレクトリの下に、実行させるユーザ名(例えばroot)でファイルを作成。権限は444でオッケー。
5:viでファイルを開き、「分 時 日 月 曜日 シェルコマンド」の順で、スペースで区切って1行づつ設定を書く。

例えば、
-------------------
#crontab written by ITTAN MOMEN            ←コメント
29 19 24 12 * /usr/local/bin/hello.sh        ←12月24日19時29分にhello.shを実行(毎年)。
* * 2,7 * * /usr/local/bin/funaichi.sh        ←毎月2日と7日にfunaichi.shを実行。
0 0 * * 0,6 /usr/local/bin/weekly.sh          ←毎週日曜日と土曜日の午前0時0分にweekly.shを実行。
-------------------
など。【分 時 日 月 曜 コマンド】の順

(分は0〜59、時は0〜23、日は1〜31、月は1〜12、曜日は日曜日を0として土曜日の6まで。カンマで区切ると複数の数値を入力できる。)

6:ファイルを閉じる。
7:あとは放っとく。

crontab -r                            cron設定削除
crontab -l                             cronの設定一覧表示
crontab -e または crontab      cronの設定編集
crontab -e ユーザ名               rootだけが使える、他人のcron設定の編集



【sendmailのモードいろいろ】
 
sendmail -bp -oQ/usr/.../... -oQで指定したディレクトリに、キューがどんだけ溜まってるか見る。-oQオプションを省略すると、mailqと同じ。
sendmail -C/usr/.../...cf 特定のcfファイルを指定(-Cの後はスペースなし)。
sendmail -q2d 溜めたキューを処理する間隔。s=seconds(秒)、m=minutes(分)、h=hours(時間)、d=days(日)
sendmail -oQ/usr/.../... -q -oQ以下で指定したディレクトリにあるキューを送信する(ディレクトリ指定の最後の/はナシ)。
sendmail -qS文字列 送信者(sender)の項目に指定した文字列があるものだけを処理する。xxx.xx.jp等の表記も可。
sendmail -qR文字列 受信者(reciever)の項目に指定した文字列があるものだけを処理する。xxx.xx.jp等の表記も可。


【ps に現れた特定の文字列を持つプロセスをみんな kill したい】

kill `ps -e | grep "文字列" | awk '{print $1}'`

って、killall使えよ…>わし。



【tar.gzファイルを一思いに展開】

いろいろあるらしい。

ついでに、tar.Zとなっているファイルの展開はこんなの。 tarコマンドの -v オプションはなくってもいいけどね。

ちなみに、tarのコマンドはこんな感じ。



【UTPクロスケーブルとストレートケーブルの製作】

仕事で時々、クロスケーブルやストレートケーブルを作るコトがある。
素人なので、そのたびに結線を資料やWebで探して確認するが、面倒になってきたのでここにメモした。

ストレートケーブルの結線図

クロスケーブルの結線図

番号どうしが繋がれば、色なんか適当でもいいじゃないかという意見もあり、実際1mくらいのショートケーブルなら
それでもなんとかなっている(片側をあわてて圧着してから、1〜8が逆順になってたのに気づいたりするし…)。
しかし、数十メートルのロングケーブルにもなるとヤバイらしい(そんな長いのを作る機会も材料もないが)。
上記の方法は、EIA規格に準拠した結線方法なので、これに沿って結線しておくのが良い。

注意点は以下のとおり。

参考URL
Hardware Book /Cable/Networking(英語:いろんなケーブル等の結線図があって大変役に立ちます。トップはここ
柏インターネットユニオン(KIU)小品集(日本語:ちゃんと日立電線の人のチェック入ってます。写真で見るUTPケーブルの「成端」もチェック。)


【.netrcを使って自動ftp】

ftpを自動化したいときは、.netrcというファイルを自分のホームディレクトリに仕込んでおきませう。

.netrcの例は、
--------------------------------------------
machine     ftp.hoge.net                (IPアドレスも可。)
login          hogehoge
password    hogepass                    (パスワード丸見えなので要注意!)

macdef    init                               (マクロ定義。空行までを実行。「init」の場合は、ログイン後に自動実行する。)
binary                                         (あとは通常のftpコマンドと同じ)
lcd        /tmp
get    test.dat    download.dat
put    upload.dat
bye                                            (これでftpから抜ける。quitも可)
                                                 (一連のコマンドの区切りのために、空行を入れておく)

machine     172.172.172.172         (2つめのサーバ名)
login          honehone
password    honepass                    (こっちもパスワード丸見えなので要注意!)

macdef    upload                          (マクロ定義。ログイン後、この名前で以下空行までの一連のマクロを実行。)
prompt                                       (mput/mgetなどの時、対話形式にするかどうかをトグル。ftpログイン時はprompt on)
ascii
lcd        /home/honehone
mput        test??.html
bye                                            (これでftpから抜ける。quitも可)
                                                 (最後も一応、空行を入れておく)
--------------------------------------------

machine ftp.hoge.net login hoge password hogepass
と一行で書いてもOK。

これを仕込んでおくと、「ftp ftp.hoge.net」とやると、ログインからmacdef以下(binary〜bye)が自動実行可能。
(仕込んでおきながら自動実行したくないときは、-nオプションをつけて「ftp -n ftp.hoge.net」とする)
 

また、「ftp 172.172.172.172」とやると、ログインまでを行って止まる。
ログイン後にmacdefでつけたマクロ名「upload」を入れると、それ以下の行を自動実行するので、
複雑なコマンドや処理をまとめておくのに便利。

$ftp 172.172.172.172
Connected to 202.255.60.32.
220 xxx FTP server (Version xxxx) ready.
331 Password required for honehone.
230 User honehone logged in.
> upload        (マクロ名を入力)
以下空行までのマクロを実行
 

★ただし、.netrcファイルのパーミッションを、groupとothersから読めない状態にする必要あり。
(でないと実行時に怒られる)。700か600がオススメ。



【Solarisをネットワークにつなぐ】

特に自助努力を要求する「Solaris」系のサーバをネットワークにつなぐために、admintoolなんかを使わずにファイル変更だけでやる場合。

前提:
 
マシン ホスト名 IPアドレス マスク
設定するマシン ringo.hogehoge.net 10.10.10.10 255.255.255.0
ネームサーバ dns.hogehoge.net 11.11.11.11 255.255.255.0
デフォルトゲートウエイ 12.12.12.12 255.255.255.0

終わったら、netstat -i、ifconfig、netstat -rnなどで確認しませう。
 

★追記★---------------

Solaris8 の場合、これだけでは上手く行きませぬ。

  • /etc/inet/ipnodes に/etc/inet/hostsと同じ設定を追加
  • これ変えてからリブートしないと反映されなかったっス。(T_T)



    【Solarisの育成】

    Solarisさんは、最初はなーんも入ってなかったりするので、手間ヒマかけて育ててあげねばなりませぬ。
    というわけで、面倒な時はここからいろいろもらってきます。パッケージとか。(お世話になりやす)。

    簡単に行くと、
    1. 圧縮ファイル展開のために、まずはGNUzipをtarを使って入れる。(….gzや….tgzはダメよん。このzip入れないと展開できないっす。)
    2. 次に、コンパイル用にGNUgcc、GNUmakeなんかを入れる。
    3. あとはお好み。PerlやPatch、SSHなんかも必要だね。
    ってとこっす。

    密かに参考にしてます。



    ●もどる●