DEVCNN Asked: 2019-04-02 21:13:47 +0800 CST2019-04-02 21:13:47 +0800 CST 2019-04-02 21:13:47 +0800 CST 如何在一定时间后自动删除日志并重新启动填满日志文件的进程? 772 服务器是 Ubuntu 16.04。我有一个进程正在运行,nohup该进程将日志记录到本地文件中。该文件变得足够大,可以占用 100% 的磁盘空间。要解决这个问题,我必须先终止进程,然后删除日志文件。然后我重新启动该过程。如何使用脚本或其他工具解决此问题? log process kill 16.04 nohup 3 个回答 Voted muclux 2019-04-02T22:28:55+08:002019-04-02T22:28:55+08:00 您可以配置日志文件的大小或经过logrotate多长时间: 日志文件被轮换(log.n 变成 log.n+1,最后一个日志文件被删除) 当前日志文件被截断而不影响写入过程。 看看man 8 logrotate。 Best Answer 0x0C4 2019-04-02T23:20:47+08:002019-04-02T23:20:47+08:00 我猜你用 nohup 启动脚本/程序 nohup scriptname 1>logfile.log 2>& & 我建议不要删除日志文件只是为了清除它 echo -n >logfile.log 如果您删除/移动打开的文件,它将被写入,直到进程关闭文件或进程结束。 David Kariuki 2021-04-28T01:59:03+08:002021-04-28T01:59:03+08:00 要自动删除所有日志,请.bashrc使用您喜欢的文本编辑器编辑文件。我在这里使用nano. 在您的终端运行: nano ~/.bashrc - 将以下内容添加到文件底部: rm -r /var/log # Deletes logs directory clear # Clear the terminal 按Ctrl+保存O,按+退出编辑模式。CtrlX .bashrc每次登录或启动终端实例时都会执行该文件,因此您的日志将始终被删除。 您也可以根据时间删除它们。例如,使用以下命令删除 3 天前创建的所有日志: find /yourlog/path -mindepth 1 -mtime +3 -delete -mindepth 1表示处理除命令行参数之外的所有文件。 -mtime +3将检查 3 天前修改过的文件。 -delete将删除它们。
您可以配置日志文件的大小或经过
logrotate
多长时间:日志文件被轮换(log.n 变成 log.n+1,最后一个日志文件被删除)
当前日志文件被截断而不影响写入过程。
看看
man 8 logrotate
。我猜你用 nohup 启动脚本/程序
我建议不要删除日志文件只是为了清除它
如果您删除/移动打开的文件,它将被写入,直到进程关闭文件或进程结束。
要自动删除所有日志,请
.bashrc
使用您喜欢的文本编辑器编辑文件。我在这里使用nano
. 在您的终端运行:将以下内容添加到文件底部:
按Ctrl+保存O,按+退出编辑模式。CtrlX
.bashrc
每次登录或启动终端实例时都会执行该文件,因此您的日志将始终被删除。您也可以根据时间删除它们。例如,使用以下命令删除 3 天前创建的所有日志:
-mindepth 1
表示处理除命令行参数之外的所有文件。-mtime +3
将检查 3 天前修改过的文件。-delete
将删除它们。