当我尝试执行perl文件时,我收到此消息 - "文本文件忙",而此文件当前正由另一个进程使用.
根据这个/ usr/bin/perl:错误的解释器:文本文件繁忙,当我尝试执行它时,当perl文件打开写入时会发生此问题.
但该文件的权限是-r-xr-xr-x.它不提供写入权限.
当两个进程同时尝试执行perl文件时,是否会发生"文本文件繁忙"?
Cha*_*ffy 10
不,这不会因为两个Perl脚本同时执行而发生.
更可能的解释是,当操作系统尝试读取其shebang行以确定要使用的解释器时,脚本本身是开放的.
如果外部进程尝试升级或修改Perl解释器本身或它所依赖的共享库之一,也会发生这种情况.请注意,文件权限通常不适用于超级用户帐户,例如root,因此尽管没有+w设置位,但任何以超级用户身份运行的进程仍可以尝试修改Perl解释器.
(这就是说,最乖巧的操作系统升级POSIX风格的操作系统工具将二进制的升级版,写在同一个文件系统的新文件,完成后关闭该文件,并在原来的重命名它(原子操作) - 这样连接的inode /usr/bin/perl本身永远不会打开写入.因此,在一个表现良好的系统上,你看到的错误不是实际应该出现的错误.
您可以使用该fuser命令查看谁为您的脚本或其解释器打开了文件:
$ sudo fuser /usr/bin/perl -uv
USER PID ACCESS COMMAND
/usr/bin/perl: root 16579 f.... (root)python
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21228 次 |
| 最近记录: |