-> 先頭に./を付ければok。
例
touch ./-i
rm ./-i
-> 先頭に./を付ければok。
例
touch ./-i
rm ./-i
先日作ったバックアップスクリプトをcronに登録して数日後。サーバの中身を見てみるとなんとそこには10kBほどのtarアーカイブが転がっているだけであった。
|l、{ j} /,,ィ//| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
i|:!ヾ、_ノ/ u {:}//ヘ | あ…ありのまま 今 起こった事を話すぜ!
|リ u' } ,ノ _,!V,ハ | < 『おれはバックアップを取り出そうと
fト、_{ル{,ィ'eラ , タ人. | 思ったらいつのまにかゴミファイルを解凍していた』
ヾ|宀| {´,)⌒`/ |<ヽトiゝ | 回線落ちだとかtarコマンドのオプション忘れだとか
ヽ iLレ u' | | ヾlトハ〉. | そんなチャチなもんじゃあ 断じてねえ
ハ !ニ⊇ '/:} V:::::ヽ. │ もっと恐ろしいものの片鱗を味わったぜ…
/:::丶'T'' /u' __ /:::::::/`ヽ \____________________
シェルスクリプト単体ではちゃんと動くのになんでcronで動かすとゴミファイルになるかなーと思い、早速cronからシステムから送られてくるメールをみたところ
try to create hot copy...
env: python: No such file or directory
と出てた。どうやらhot-backup.pyでコケたらしい。調べたら以下の記事にたどり着いた。
どさにっき #!/usr/bin/env
たとえば FreeBSD では、標準の /etc/crontab はPATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
となっていて /usr/local/bin が含まれていない。なので、
#!/usr/bin/env ruby
というスクリプトを /etc/crontab に登録すると、FreeBSD では ruby は /usr/local/bin にあるのが標準なので、インタープリタを見つけられずにエラーになる。
BSDの場合、#!/usr/bin/env hogehoge には気をつけろって事かな。
とりあえずhot-backup.pyの1行目
#!/usr/bin/env pythonを#!/usr/local/bin/pythonに書き換え。直接インタプリタを指定するように修正した。
他にもシェルスクリプト内で export PATH=$PATH:/usr/local/bin って追記する方法がある。
ようやくここまできた。
以前も紹介したようにsubversionレポジトリのバックアップを行う場合はsubversionの付録として一緒にインストールされるhot-backup.pyを使う。ただ、FreeBSDの場合、portsで入れるとデフォルトで/usr/local/share/subversion/backup/hot-backup.pyという変な場所にあるので、予め使いやすい場所にコピーしておく。今回はバックアップファイルをサーバへ送るアカウントのbinに突っ込んだ。
ものすごいやっつけスクリプト。レポジトリの数が増えたらfor文使うなりしないとダメだねぇ。
#!/bin/sh . ~/.keychain/`uname -n`-sh echo 'try to create hot copy...' ~/bin/hot-backup.py /home/svn/repos/proj1 /home/backup/repos_hotcopy ~/bin/hot-backup.py /home/svn/repos/proj2 /home/backup/repos_hotcopy echo 'try to create archive and send to backup server...' tar czf - -C /home/backup repos_hotcopy | ssh backup@192.168.xxx.yyy "cat > \ /mnt/share/backup/lab-server3.repos.`date +%Y%m%d`.tgz" echo 'try to delete hotcopy and archive...' rm -rf /home/backup/repos_hotcopy/proj1-* /home/svn_backup/repos_hotcopy/proj2-* echo 'all complete!'
バックアップサーバに繋がらなかった場合も考えなきゃイカンのだが、まぁまだいいや。あとはこのスクリプトをcronに登録してあげればok。
BSD Hackの#38に書いてあるsshを利用したバックアップ方法を試してみることにした。
ただ、読み返してみると結構説明が省かれている。(特にsshのくだり)
鍵にパスフレーズを入力した場合、おそらく本に書かれているままのことをしただけではうまく動かないので、今回はkeychanを利用してパスフレーズありでもsshスクリプトを書いて自動化できるようにしたのでその時のメモ。
まずbackupを取りたいマシンにbackup専用ユーザを作成。そのユーザで
ssh-keygen -b 1024 -t dsa
とやり、1024bitの強度の秘密鍵と公開鍵をDSA方式で生成。.sshディレクトリ内にid_dsaとid_dsa.pubができるので公開鍵であるid_dsa.pubをバックアップファイルの送り先であるアカウントのauthorized_keysに追加する。(ここではバックアップファイルの送り先を192.168.xxx.yyy, バックアップファイルが作られる専用のアカウントをbackupとする。)
authorized_keysに公開鍵を追加し終わったら、backupを取りたいマシン上で
echo aaaaa | ssh backup@192.168.xxx.yyy "cat > hoge.txt"
とかやって実際に192.168.xxx.yyyのbackupアカウントのホームディレクトリに'aaaaa'と書かれたhoge.txtが生成されるかテストしてみる。
ただこの時点では
Enter passphrase for key '/home/backup/.ssh/id_dsa
と鍵を生成したときに打ち込んだパスワードを毎回聞かれてしまうのでcronで自動化できない。パスフレーズを打ち込まないという方法もあるけど、それはあまりセキュアじゃないのでやりたくないところだ。
そーゆうときはkeychainを使って自動化する。FreeBSDの場合、/usr/ports/security/keychainにある。
#keychainのインストール
portinstall security/keychain
#一応確認
pkg_info | grep key
-> keychain-2.6.8 A user-friendly front-end to ssh-agent(1) => ok
んで
rehash
#起動してみる
keychain ~/.ssh/id_dsa
パスフレーズを聞かれるので鍵生成時に打ち込んだパスを入力。
その後
source ~/.keychain/$HOST-sh
毎回ログインする度にこの2行を打ち込むのはツライので
zshなら.zlogin、bashなら.bash_profileに
/usr/local/bin/keychain ~/.ssh/id_dsa source ~/.keychain/$HOST-sh
と書いて再ログインすれば自動で2行分がログインされる度に実行される。
おそらくもう echo aaaaa | ssh backup@192.168.xxx.yyy "cat > hoge.txt" とか打ち込んでもパスの要求はされないはずだ。
------
早速cronで定期的に動かすサンプルスクリプトを書いてみる。最初に例の~/.keychain/にある、あのスクリプトを呼び出す必要がある。シェルスクリプト内で$HOSTやシェルに組み込まれてるsourceコマンドは使えないので、.zloginで書き込んだ内容を若干変えなければならない。
とりあえず以下のようなサンプルスクリプトを書いた。
#!/bin/sh . ~/.keychain/`uname -n`-sh echo hogehoge | ssh backup@192.168.xxx.yyy "cat >> hoge.txt"
あとはこれをchmod 700 cron_test.shとやって実行可能にし、cronで実行させる。
crontab -e とやってcronエディタを開いて
*/2 * * * * /home/backup/bin/cron_test.sh
と書き込む。
あとはバックアップファイル格納先で tail -f hoge.txt とやってちゃんと2分おきに書き込まれているかテストしてみる。幸い何事もなく、ちゃんと書き込んでいるようだ。テストが終わったらcronの1行分を削除して同様にバックアップスクリプトをちゃんと書けばいい。
今回のようなcronによるsshスクリプトを使う場合、scponlyと組み合わせてログイン先で使えるコマンドを制限してあげればセキュリティー的になお良いのですが、この辺で力尽きました。scponlyは次回暇なときに試します。
Sarge化までの基本的な流れは玄箱 - sargeにアップデートしてみるを参考にしました。
tmp-kunという一時的なユーザが居るので作業用ユーザ(ここではhogehogeとする)を作って、tmp-kunを消す。
su -
passwd(まずrootのパスワードを変更しておく)
adduser hogehoge
(hogehogeでログインし直す)
deluser --remove-home tmp-kun
apt-get update
vi /etc/apt/sources.list vi内で:%s/woody/sarge/gとやってsargeに一括変換
apt-get update
apt-get dist-upgrade
apt-get dist-upgradeとやると色々聞かれてくるがほとんどデフォルトでok。
各質問の意味については「初代玄箱 (Not HG, Not PRO) への Debian 化キット導入メモ」を参考にした。
注意しなければいけないのはhaltに関する質問( *** halt (Y/I/N/O/D/Z) [default=N] ? )で
デフォルトのN以外を選択してファイルを更新してしまうと玄箱本体の電源キーを押してもシャットダウン出来なくなってしまうそうなので必ずNを選択する。
ここまでやればSarge化完了。
apt-getのフロントエンドであるaptitudeを使用した。参考:aptitude ユーザマニュアル
aptitude update
aptitude upgrade
#いつものヤツを入れておく。
aptitude install wget
aptitude install zsh
aptitude install ssh
aptitude install screen
aptitude install ntpdate
aptitude install lv
aptitude install sudo
-GNU Screen の注意点
そのままの状態でGNU Screen を起動したら"No more PTYs"と怒られ起動できなかった。調べてみたら解決してる人がいたッ
GNU Screen の No more PTYs 問題を解決する より
/etc/fstab内の
none /dev/pts devpts gid=5,mode=20 0 0 を
none /dev/pts devpts gid=5,mode=620 0 0 に修正。
-ntpdateの設定
以前FreeBSDでntpdateを使用したが、若干使い方が異なるのでメモっとく。(参考:ntpで時計合わせ)
vi /etc/default/ntpdate
NTPSERVERSの部分に使用するntpサーバを記述。
使い方
/etc/init.d/ntpdate start らしい。FreeBSDの時とは明らかに異なる。
あとはこれをcronに登録して定期的に起動するようにすればok。
-ログインシェルの変更
chshコマンドでデフォルトのログインシェルを変えられる。
#sshが動くのを確認したらftpとtelnetのデーモンを消す
aptitude remove proftpd telnetd
その後sshをパスワード認証ではなく鍵認証に変更した。ホームディレクトリの.ssh内に公開鍵を置き(authorized_keys)
sudo vi /etc/ssh/sshd_config で設定ファイル開いて最後のUsePAM をnoにする。
sudo /etc/init.d/ssh restart でデーモンを再起動。この時、必ず一回別の端末で鍵認証が通るかテストする。
一応ココまで進んだ。
実は研究室にある2台のサーバはバックアップを気が向いたときにしかとっていない。
このままではヤバイと思い、7月頭ぐらいに玄箱をバックアップ用サーバとして買ったのだが、最近組んでる暇が全然無くて放置状態であった。久々に暇な研究室生活を過ごせそうだったので思い切って組み立てることにした。
あの男である。
組み立て自体も結構しんどかったが(IDEケーブル固すぎ)なんとか完成。とりあえず、ファームウェアをネットワーク経由でインストールした。しかし、この時点でファームウェアが正しくインストールされませんでしたとの警告が。早くも苦労の予感がした。とりあえずtelnetでログインできるしいいかと思い、先に進む。
初回起動時はKURO-BOX-EM login: と表示されていた。EM(玄箱内蔵のフラッシュメモリー内のLinuxを呼ぶ状態のことらしい。ちなみにシェルがashなのですげー操作しづらい。)がくっついてるからもう既にEMモードなのかと思い、
dd if=/dev/fl3 bs=4 count=1とコマンド打って確認したら既に中身のデータがNGNG。既にEMモードらしい。
/sbin/mfdisk -e /dev/hda その後
sh /sbin/mkfilesystem.sh とやってパーティションを確保。
# df -h
Filesystem Size Used Available Use% Mounted on
/dev/ram0 9.5M 5.0M 4.5M 53% /
/dev/hda3 227.0G 32.1M 227.0G 0% /mnt2
/dev/hda1 2.0G 32.1M 1.8G 2% /mnt
デフォに甘えたら、こうなった。
http://kuro.dsk.jp/からdebian_2006_06_10_dist.tgzをDL。その後ftpでサーバの/mnt2にup
debian_2006_06_10_dist.tgzを/mntに解凍
cd /mnt
tar zxvf /mnt2/debian_2006_06_10_dist.tgz
EMモードを解除する。
/usr/bin/write_ok(引数について警告出るけど気にしない!)
dd if=/dev/fl3 bs=4 count=1 -> OKOKになっている。
rebootする前に以下の4つのファイルを必ずネットワークの環境に合わせて修正しておく。
vi /mnt/etc/network/interfaces
vi /mnt/etc/hosts
vi /mnt/etc/hosts.allow
vi /mnt/etc/resolv.conf
ちなみに私は/mnt/etc/hosts.allowを編集し忘れ、ログインできなくてホアアー!な状態に一回なりました。( 'Д`)
rebootしてその後再びtelnetでログイン。
Debian 表記キタァー。
とりあえず今日はここまで。
参考文献?多すぎるのでココにまとめた。
どうもだめだ。リスニング能力が凄い落ちてる。
先週と先々週が家にほとんど帰れないぐらい忙しかったのでその反動がモロにやってきた。
月火と暇な2日間を本を読んで過ごそうかなぁと思っていたのだが、寝てただけのような気がする。最近睡眠時間がもの凄くヤバイ。こんなんで来年社会人やっていけるのかしら?( ´Д`)
とりあえず、思い出せる限り書いていこう。
7/11,12,13 -> ホント 発表日前のT研は地獄だぜ! フゥハハハーハァー(AA略 な3日間であった。他の研究室のように、1,2週間目にリハーサルをやりたいところなのだが、いつも実行されずに卒研発表になってしまう。この3日間はほとんど徹夜できつかったなぁ。
7/20 -> 今度は自分の発表日。一応発表自体は問題なく進めたのだけれども、質疑応答がまだ弱いなぁ...。ちなみに発表後に打ち上げがあったのだが、開催地がなんと教授宅。色々な意味でハードだった。
7/22 -> バイト後、元研究室仲間と飲み会。社会人の辛さを垣間見たような気がします。自分も文章力を上げないとなぁと思った。自分の場合、高校生辺りから技術書以外の本を読まない人になってしまったのでまずはこの辺から直していきたい。もっとを色んな本を読むことにする。
7/23 -> お昼ぐらいに母親と市役所に行った。母は課税証明書を発行しに。自分は年金のことで質問しに。自分の場合、学生納付特例制度を利用していて、20,21,22歳の分をまだ払ってないんですが、この制度って3年以内に追納しないと加算額が上乗せされるのね(´Д`; ) つまり20の頃の分は既に若干高くなってるわけです。
どのぐらい高くなってるのか聞いてみたんだけどまだ1ヶ月120円ぐらいの利子だったかな。ただ、放置してると結構な額(数千円オーダー)になっていたので、なるべくここ1,2年のウチに払ってしまうと思う。返ってくるかどうかは激しく微妙だが。
--------
そーいえば昨日梗概を書いてる最中に地震があった。
やたらゆっくり揺れていたのでまた新潟地方で地震か!と思いTVチューナーがありそうなT研に行き、速報を待っていた。
なにやらテロップには北海道と京都の文字。京都でも北海道でも地震か、同時多発って初めての経験だなぁと思っていたら結局震央は京都府沖で一緒だったのね。ただ、震源が370km(だったと思う)とめちゃくちゃ深いので、各地の震度を表した図が面白いことになっていた。
震央から離れてるトコの方が大きいという今までに見たことがない図。記念に保存しておいた。
昨日(海の日)から大学に来て発表の資料を元に梗概作っていた。
TeXでやろうとおもったんだけどタイトルと概要だけ1段、本文は2段ってやりたかったんだけどTeXでやろうとしたらハマった。のでメモ。
最初は文書クラスのオプションをtwocolumnに指定してたんだけど(\documentclass[twocolumn])これだとabstractも2段になっちゃうんだよね...。リファレンスで調べてみたら\twocolumnと\onecolumnがあるからこれで解決ジャンと思ったら段落を変えた時点で改ページ処理が入る。更に調べると改ページしないためのスタイルファイルがあることを知る。
\usepackage{multicol}
(略)
\begin{multicols}{2}
……
\end{multicols}
とやれば改ページ処理が入らないとのこと。これでやっと書き始められると思ったのもつかの間。今度は図が入らないorz
どうやらmulticol環境ではfigureが使えないとのこと。これはmulticolの仕様らしい。画像そのものは貼ることができるが、キャプションがないのはちょっとなぁ...。(参考元:http://tex.sparcstation.org/TIPSincludegraphics2.html)
最終的にたどり着いたのがココのページ。(まず必要なこと(最初にお読み下さい)も併せて見ないとハマる。)
2つの参考元ページを合わせるとこんな感じになる。\makeatletter \def\abstract#1{\long\def\@abstract{#1}} \def\@abstract{} \let\@oldmaketitle=\@maketitle \def\@maketitle{ \vskip -3zh \@oldmaketitle % \begin{center}\large\bf Abstract\end{center} \vspace*{-0.8cm} \begin{quote}\small \textbf{Abstract:} \@abstract\end{quote} \vskip 1.5em} \makeatother
\maketitleをごちょごちょいじってなんとかしてる。結構こーゆうスタイルって学会とかでもよく見かけるんだけど他の人たちはどうやってやってるんだろう。
後藤さんのFreeBSD Daily Topicsより。(ココのページのfeedはFreeBSD関連の最新情報を得るのに重宝している。)
前回cpufreqを有効にするために/loader.confに[cpufreq_load="YES"]と追記したけど、この作業が不要になるそうな。
cpufreqは必ず使用している機能なのでとりあえず、メモ。
interFMでよく聴く。
Rihanna - Umbrella
以前紹介したJustin Timberlake - My Loveもそうなんだけど、曲自体はゆったり + バックに派手なシンセという構成に弱いのかもしれない。
大昔見たアニメ、スノーマンのテーマ曲
これって"Walking In The Air"っていう題名なのね。早速youtubeで検索してみたらなんとFantasmicを聴いて以来大好きなNight Wishが同曲をカヴァーしていた。
Nightwish - Walking in the Air (Live)
むぅ、収録してるアルバムCD(こっちかこっち)が欲しい(・ω・`)
---
どうもやる気がでない。やらなきゃいかんことはたくさんあるのだが。
やっぱ生活リズムがメチャクチャなのもやる気を削いでいる一因なのかしら。そろそろこの生活リズムも戻さないとなぁ...。夏休みに入ったら壊滅的にヤバそーだ。
面倒そうだなーと思ってたbugが意外に早く潰せた。
それよりも手強かったのは環境合わせだった。この間までちゃんと動いていたんだけどなぁ...。むぅ。
---
ニコニコ動画でさよなら絶望先生を見た。高校生の頃から勝手に改蔵を読んでいた身としては動く久米田先生の絵に感動した。初回だからか無駄にクオリティが高い。漫画同様に色んなところに小ネタが隠れているから、みんなでコメントできるニコニコ動画に合ってるなぁ...と思った。一人じゃ3回見たとしても気づかないよ(´¬`
なんで緊張気味かっていうと、前回受け持った高3の子が持ってきた問題を素で解けなかったからです。('Д`)ウワーン
今回は醜態を晒すわけにはいかない!と予習をしていざ行ってみると、その子の今日の科目は英語らしく別の先生が担当になってて、これなんてマーフィーの法則?(´・ω・` ) って感じの一日だった。
なんとかこの間で2つ目の授業の発表も終わり、後はセミナーの中間発表を残すのみ。
なんとかここまできたぁー。
最近ネットニュースとか全然見てなかったので、もの凄い勢いで読み漁った。以下ちょっと気になったものを挙げていく。
1.ウィルコム「W-ZERO3 [es]」でLinuxを起動するツールが公開
こ、コレは素晴らしい。もしかしたらi-Phone待たなくてもイイかも。
ただ、まだ動作が不安な部分もあるらしいので、しばらくウォッチすることにする。
2.ハマると絶対に抜けられないFLASHゲーム「Desktop Tower Defense」おかげで睡眠不足です。
このゲームはヤバイ!昨夜はドキュメント書きつつ、微妙にコレをやってた。
3.ついに登場! Eclipse 3.3 - 新機能と同梱プラグインを速攻レビュー
文字単位でdiffが表示された点と、未解決の型に対してもコード補完が可能な点が特にイイ。早速入れ直そうかしら。
---
1日ぶりに家に帰ったらよーやくamazonで注文したCDが届いていた。
[MAD] BLACK LAGOON - Broken Glass Syndrome
ニコニコ動画で↑のブラクラMAD見て、コレはイイ曲と思って購入ボタンをポチッと押したんだけど結構同じように購入した人が多かったのかな?在庫がもうないと言われてしまい、3週間近く待つハメになりましたとさ(´Д`;)
まぁ、ようやく手元にCDが届いたので良かった良かった。
----
以下ニコニコ動画より最近よく見て面白かったモノ。
トリビアの泉 ネコ ヌコ
コレはカワイイ。
アニメの中の人つながりクイズ
そーいえばじゃじゃ丸ってスネオっぽい声だったなぁ...。
花沢さんと山田が同じ人の声だったとは...。ど根性カエルとのび太のママが同じ人の声だったとは...。しらんかったorz
あと分かっているのだが、どうしてもポロリのところで笑ってしまう。
空耳アワード2006 後編
無理弁当がツボにはまってヤバすぎるww
最近の作業BGM
ドンキーコング BGM総まとめ
ドンキーコング2 名曲総まとめ改
懐かしいなぁ(´p`)小4か5年のときだろうか、スーファミなのに画面がスゴイ綺麗だから当時感動した記憶がある。曲ももの凄い脳裏に焼き付いてる。
ニコニコ動画でドンキーコングの曲を聴きながら、資料作りで徹夜です(=Д= )ねむー。
トイレに行った際にふと外を見たらむちゃくちゃ霧で覆われていたので撮ってみた。
4Fのベランダから。
なんか蝉の声がもう聞こえてる。いよいよ夏かぁ...。
昼頃に学校に行ってマターリ火曜の輪講の準備しようかなぁと思ったら23時過ぎぐらいまで論文のお手伝いに駆り出された⊂⌒~⊃。Д。)⊃
大学出たのが23時20分過ぎぐらい。でもこの時間だと道路ががら空き&信号の繋がりが神懸かり的に良かったので0時前に駐車場に着いちゃった。何気に最短記録更新かしら?
発表資料作らないとなぁ.....。(・ω・`)
金曜日の夜は内定者同士で飲み会だった。みんな気さくな人ばっかりで楽しく過ごせた。やっぱこーゆう集まりが入社前にできるのってmixiのようなSNSがなかったら無理だろうなぁって思う。便利な時代になったもんです。
----以下、オレのニコニコ動画のマイリストの退避場所になります。
100個までしか保存できない載って不便だわー(´Д`)
自分用にマイリスト専用アプリを作ろうか考え中。
XXは大変なシリーズ
声合わせるのがうますぎ。
作者が一晩でやってくれたようです。
XXが倒せないシリーズ
声が凄すぎるw
コレはよい世界史の勉強
FPSシリーズ
前回紹介したCoDの高画質版。相変わらずpart2の砲撃シーンが凄まじい。