在我的两个虚拟机上,该crontab -e
命令无法在其中创建目录,/tmp
但它可以使用mkdir
:
/tmp/crontab.oxyaBy: Input/output error
Creation of temporary crontab file failed - aborting
跟踪输出:
root@vm:~# strace crontab -e
mkdir("/tmp/crontab.1SuJe9", 0700) = -1 EIO (Input/output error)
root@vm:~# strace mkdir /tmp/crontab.1SuJe9 -m 700
mkdir("/tmp/crontab.1SuJe9", 0700) = 0
两个虚拟机都运行 Ubuntu 16.04.6 LTS (4.4.0-173-generic x86_64)
每次都会重现此问题,并且重启后问题仍然存在,fsck 表示一切正常,此虚拟机上没有其他问题。我已经尝试重新安装 cron 包,但没有任何变化。
有任何想法吗?谢谢你!
编辑: dmesg
节目
EXT4-fs (dm-0): Quota write (off=4080, len=40) cancelled because not block aligned
Quota error (device dm-0): v1_commit_dqblk: dquota write failed
该crontab
命令适用,quotaoff
但我仍然很想知道为什么crontab
并且mkdir
表现不同......
答案1
这是一个文件系统问题。并且创建目录与创建文件不同。
检查呼叫用户的配额设置。
此外,确保您可以由同一用户并使用 echo 或 cat 等创建文件,并且您可以在文件中放置一些内容,然后从该点跟踪问题。
更新:显然这是一个与配额相关的问题,因为您已经更新了您的问题。事实上,从配额的角度来看,目录占用零字节,因此即使达到配额,您也可以创建任意数量的目录。但为了让 cron 工作,必须创建一个非零文件,如果达到最大配额,该文件肯定会被阻止。
答案2
由于为 root 用户启用了配额工具,我遇到了完全相同的问题,因此我首先使用所有禁用配额quotaoff -a
,然后重复该命令,没有出现问题。后来,我修复了配额,所以对我来说不再有问题......