2つのディレクトリの内容を比較し、その結果を標準出力に出力するプログラム(diffのラッパーです)を作成していますが、以下のように出力を比較対照のディレクトリ内のファイルにリダイレクトした場合、このファイルまで比較してしまいます。
$ mydiff . directory > diffresult
これを防ぐため、ファイルを比較する際に、ファイルが他プロセスによってオープンされているかどうか調べ、その旨をstderrに出力するようにしたいのですが、その方法がわからず困っていますのでよろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> ですが、このコマンドはrootのみにしか実行権限がない
そうなの?
> 本マシンは複数の開発者で共有しているものなので、あまり気楽にrootになるわけにはいかない
思い付く案を二つほど。
・管理者にお願いして、fuser に実行権限をつけてもらう
・su コマンドを使って、fuser を実行する
結局 su コマンドを使う、ということは root 権限を得ることになるのだから、
「気楽に root になるわけにいかない」ということを解決しているわけには
ならんですが。
ちなみに、こんな感じ。
% su root -c "/usr/sbin/fuser 対象のファイル名"
No.2
- 回答日時:
> ファイルが他プロセスによってオープンされているかどうか調べ、その旨をstderrに出力するようにしたい
使っている OS が分からないのですが、fuser というコマンドがありませんか?
こいつの出力を加工することで、望みの結果を得られるはず。
ご回答ありがとうございます。
使用しているOSはHP-UXで、/usr/sbin/fuserというコマンドはありました。
ですが、このコマンドはrootのみにしか実行権限がないため、管理者ではない私には使用できないものでした。
一応rootのパスワードも知っているため、実験したところ、プロセスIDが得られましたので、これを加工すれば何とかなることが分かりました。
ただし、本マシンは複数の開発者で共有しているものなので、あまり気楽にrootになるわけにはいかないのです。
No.1
- 回答日時:
「あるファイルが他プロセスによってオープンされているかどうかを確認する方法」
は知りませんが、
「mydiffの開始よりも後で内容が変更されたかどうかを確認する方法」
で代用できませんか?
mydiffを何で書かれているか分かりませんので、私の標準シェルである
cshで書くと、
# スクリプトの先頭
touch /tmp/mydiff.tmp
....
if( { newer /tmp/mydiff.tmp $f1 } == 0 ) then
echo $f1 is modified after mydiff was invoked.
exit
endif
if( { newer /tmp/mydiff.tmp $f2 } == 0 ) then
echo $f2 is modified after mydiff was invoked.
exit
endif
....
# この辺で$f1と$f2を比較
rm -f /tmp/mydiff.tmp
# スクリプトの末尾
上のスクリプトでは、対応するファイル名が$f1と$f2に
入っていて、diff $f1 $f2とかやって比較している、
と仮定しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 配列操作について 5 2023/04/18 07:27
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- 統計学 お世話になっています. x軸は時間(期間)y軸はある値に対する2つのグラフ比較をしますが、私個人の考 2 2023/03/30 11:42
- 会計ソフト・業務用ソフト エクセルファイルの修復前後の比較について エクセルファイルの動きが悪く何となく修復をしてみたのですが 1 2022/12/23 17:32
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- システム 「パソコンA」から「パソコンB」にインターネット経由で ファイルを送りたいとき 4 2023/01/11 14:14
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Perl ExcelVbaファイルを.xls から .xlsm に変更したときの日付の変化に対応する方法。 2 2022/08/15 16:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
ファイル名についている「-」と...
-
ラズパイで『’test.service’をs...
-
テキストファイルから最終行の抽出
-
xcopyのエラー情報のはき...
-
DUとLSの表示の差
-
コマンドプロンプト dir でのソ...
-
ファイルが書き込み中かどうか...
-
ファイル名の -(ハイフン)を _(...
-
Windows7 zip圧縮・解凍のコマンド
-
DOSコマンドのFOR文で空白を含...
-
Linuxで標準出力したファイルの...
-
ZIPファイルの作成をコマンドか...
-
DOS コマンドの~zfの意味を教え...
-
コマンドプロンプト fcコマン...
-
バッチファイルでのzip形式フォ...
-
Linux初心者です。cpコマンドの...
-
oracleの文字コードとlinuxサー...
-
batファイルの強制終了を回避し...
-
win11のエクスプローラーの右ク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
テキストファイルから最終行の抽出
-
ファイル名についている「-」と...
-
ラズパイで『’test.service’をs...
-
Linuxで標準出力したファイルの...
-
win11のエクスプローラーの右ク...
-
ファイル名一覧の印刷
-
DOSコマンドのFOR文で空白を含...
-
DOS コマンドの~zfの意味を教え...
-
xcopyのエラー情報のはき...
-
batファイルの強制終了を回避し...
-
oracleの文字コードとlinuxサー...
-
特定の更新日付のファイルのみ...
-
「Vmmem」のメモリ使用量が高い...
-
ファイル名の -(ハイフン)を _(...
-
バッチファイルでのzip形式フォ...
-
TeXでの見出しの変更は可能でし...
-
数字を複数回繰り返す正規表現...
-
CUIとGUIのコピー速度の違いは?
-
ネームサーバーがうまく動きません
おすすめ情報