最終更新: 2002-08-27
坂口修一 (SAKAGUTI Syuiti)

UNIX 関連の覚え書き


プログラムの実行と結果報告

パラメータあるいは入力ファイルを変更しながら何度も計算を実行したい場合は,実行専用のシェルスクリプトを用意すると良い。また,一回当りの実行時間が長く,いちいちリモートログインして結果の確認をするのが面倒な場合は,実行結果やレポートをメールで通知して来る様にすればよい。

◇バッチジョブとして実行する

数値計算など,実行時間が長いプログラムは,バックグラウンドで実行するよりはバッチジョブとして実行する方が推奨できる。

◇実行結果レポートをメールで送る

計算の状況が逐一報告されて来るので,リモートでやっている計算の監視に便利。

ファイル処理・テキスト処理

ファイル処理

◇あるディレクトリにあるすべての eps ファイルを pdf に変換する

ps2pdf があるならば,次のシェルスクリプトを使用すればよい。

#!/bin/sh
#
# e2p
#
# SAKAGUTI Syuiti
#
# 08-Jul-2002

PS2PDF=/usr/local/bin/ps2pdf
LIST=`ls . | grep 'eps'`

for FILE in ${LIST}
do
   echo ${PS2PDF} ${FILE}
   ${PS2PDF} ${FILE}
done

テキスト処理

UNIX 上でテキストの処理に精通するためには,フィルタについて知る必要がある。
行処理系

列処理系

◇上書きソート

ファイルをソートして,上書きしたいという事がよくあるが,単純に sort file_a > file_a とやると,file_a が壊れてしまうので,普通は sort file_a > file_b とやる。これでは別な名前のファイルが余分に増える。しかし,実は sort には上書き用のオプション -o があるので,sort file_a -o file_a とやればよい。

◇連続空行の削除

uniqを使えばよい。連続した改行は,ひとつの改行に置き換えられる。

◇空行の削除

file_a の空行を削除してfile_b に書き出すには, sed -e '/^$/d' file_a > file_b とすればよい。^ は行頭,$ は行末を表すので,^$ は行末まで何も書かれていない行という意味になる。

バックアップ処理 - 主に個人レベルの小規模バックアップについて

バックアップ作業は必ず自動化し,自分が特に意識しなくても実行される様に設定しておく事。更新されていないバックアップアーカイブなど何の役にも立たない。また,時々動作確認をする事も必要。

バックアップ計画の立案

何から守るのか?
  1. 上書き
  2. 誤消去
  3. ディスククラッシュ
意識すべきもの。
  1. 更新頻度
  2. 分量
  3. 範囲
  4. 重要性
  5. 冗長性
メディアは?
  1. HD
  2. MT
  3. MO / Zip / Jazz / その他リムーバブルドライブ
  4. CD-R / CD-RW
  5. DVD-RAM

開発中のコードのバックアップ

◇Make による定時バックアップ

普通,コードを書き直したときには Make して動作を確認する。どうせならば,そのとき複製を特定のディレクトリにコビーする様にしておけばよい。

◇cron によるバックアップ

夜中でも真昼でも構わない,自分が計算機を使用していないときにバックアップを取るにはこれが一番だろう。