NFS を使用してサーバー上のファイルを編集します。ファイルがシャバンラインを含むスクリプトの場合、それを実行するたびに保存後約5秒間「テキストファイルを使用中」エラーが発生します。
次のようにファイルをvi(4.19カーネル)で開くと、同じ問題が再現される可能性があります。
:>test.sh
chmod +x test.sh
vi test.sh
# Ctrl-Z to suspend vi
./test.sh
# text file busy: ./test.sh
5.7カーネルでは、上記のviの例はエラーを生成しませんが、5.7から5.7システムへのNFS書き込みは、各保存後5秒間まだ「テキストファイルを使用中」エラーを生成します。
すべてhttps://stackoverflow.com/questions/16764946/what-generates-the-text-file-busy-message-in-unixスクリプトを実行するバイナリを明示的に呼び出すことでエラーを解決できます。
bash test.sh
私はこれを呼び出すスクリプトを書くことができると信じて、引数によって提供されたパスをe
開き、ファイルがshebangで始まるかどうかを確認し、そうであればshebang行を解析し、shebangからバイナリを手動で呼び出します。
e ./test.sh
しかし、これにより質問が生じます。オペレーティングシステムにどのくらいの支払いをしていますか?
書き込み用に開かれたファイルを実行するようにLinuxをどのように設定しますか?
5.7カーネルソースをgrep'dしましたが、ETXTBUSY
結果は出ませんでした。
またはあまり一般的な回避策としてNFSへの書き込み操作を約5秒間開いたままにするのではなく、書き込み中のファイルをすぐに閉じるようにするにはどうすればよいですか?
編集する:
コメントによると、vi(より正確にはnvi)の問題は次のとおりです。これDebianの1.81.6-16で修正されました(私の4.19システムには1.81.6-15があり、私の5.7システムには1.81.6-16があります)。テキストファイルの使用中にエラーを生成せずにNFSストレージを作成する方法を見つけようとしています。
2番目の編集:
/etc/exports
サーバーから:
/home/w 10.0.9.0/24(rw,insecure)
以下と一緒にインストールされます-o soft,intr
。
serene:/home/w on /mnt/speed type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.9.153,local_lock=none,addr=10.0.2.2)
サーバーパッケージ(Devuanテスト):
serene% dpkg -l|grep nfs
ii libnfsidmap2:amd64 0.25-5.1 amd64 NFS idmapping library
ii nfs-common 1:1.3.4-4 amd64 NFS support files common to client and server
ii nfs-kernel-server 1:1.3.4-4 amd64 support for NFS kernel server
現在の問題を再現できない作業クライアントのクライアントパッケージ(Devuanテスト):
averagest% dpkg -l|grep nfs
ii libnfsidmap2:amd64 0.25-5.1 amd64 NFS idmapping library
ii nfs-common 1:1.3.4-4 amd64 NFS support files common to client and server
ベストアンサー1
まだコメントすることはできませんが、あなたの環境に関するより具体的な情報を提供できますか?
私はあなたが見ている動作を再現できません。たとえば、/ testにNFSファイルシステムがマウントされています。次のコマンドを実行すると、5秒遅れずにすぐに返されます。
$ cd /test
$ vi xx; chmod 755 xx; ./xx
Tue Sep 8 17:45:17 EDT 2020
私がxxに入れたものは次のとおりです。
#!/bin/sh
date
また、「vi xx」とCTRL-Zを押して一時停止すると、遅延やエラーはありません。
$ vi xx
(CTRL-Z)
[1] + Stopped vi xx
$ ./xx
Tue Sep 8 17:51:01 EDT 2020
テスト中です:CentOS Linuxバージョン7.7.1908。 NFSがLinux間で異なる動作をすることは期待していませんが、確かにわかりません。
nviの代わりにvimを使用すると動作が変わりますか?
「グレブマウント」とはどういう意味ですか?nfs マウントポイント「展示してる?