time(seconds) unlimited file(blocks) 2097151 data(kbytes) unlimited stack(kbytes) 16384 coredump(blocks) 32768 nofiles(descriptors) 2048 memory(kbytes) unlimited
用2097151*512=1073741312。若再加1个512块,则超出上面文件长度1个字节,换言之,上面实际文件长度正好在2097151块限度之内。可见,很可能是这个限制导致问题。
man ulimit显示:
-f The number of 512-byte blocks on files that can be written by the current process and its child processes (files of any size may be read). On file systems (such as vxfs file systems) that support large files, setting this limit to unlimited represents the largest file size supported on the file system. See ``Notices'', below.
注意里面的child process。那么去掉这个限制,需要传的文件是1.3个G,应该未超出文件系统限制(2G)。执行ulimit -f unlimited。再查看,file的限制已经是unlimited了。再从另一台机子上往这台机子上put文件,还是报一样的错误。
查看ulimit的man,原来修改只对本次shell登录有效。那么就是说对于另一台机子来说,本机的系统其实还是limit到了1个G。所以出错也正常。那我取过来呢?从本机ftp到另一台机子上,get那个文件,果然,成功了,收到了完整的1.3G文件。
现在退出本机登录的用户,再重新登录,果然,ulimit -a查看的文件大小限制,又变回了2097151块。想必有地方配置它为系统参数使其永久生效,急于回家暂不研究,将ulimit -f unlimited写进.profile文件里走人。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/481.html