问题
刚接手了一台服务器,发现访问日志无比巨大(记录在一个文件中),因此挂载了新的云盘,将日志转移到云盘;发现mv之后,日志所占的磁盘空间并没有释放。新建了日志的同名文件,也没有新的日志写入。
猜测应该是原来的文件文件描述符没有释放,怎样在不重启服务的情况下将磁盘空间释放呢?
这台服务器的httpd是编译安装的,没有relaod选项。
问题带来的疑问
假如使用httpd -k restart
,在线的用户肯定会受到影响;
具体会受到哪些影响呢?
1 假如用户在付款交易,正在写数据库,应该会导致数据错乱吧;
2 会影响到用户的登录状态吗?
总结
经过帮助,使用httpd -k graceful
也可以。
reload
和graceful
的作用是不重启使httpd的配置生效。
更优雅的删除日志并释放空间
恰好昨天面试问到如何删除日志并释放空间,上面的方法面试官都不太满意,一直追问,没回答上来。
他说:
echo > xxx.log
原来只要这样,如此简单,不用重启服务,发送信号。
service apache2 reload即可