用crontab清理长毛象媒体文件

2022-10-23  |  #mastodon  | In 一些经验

写一个crontab自动清理毛毛象的media files。

以下所有命令都在root用户下执行。

编写mastodon用户的crontab:

crontab -e -u mastodon

打开文件后在里面直接添加下面的内容, 注意最后一行:10 * * * * cd /home/mastodon/live && bin/tootctl media remove,这里的10代表每个小时的十分(比如10:10)执行这个指令,为了查看crontab是否正确运行,建议先将时间设置为当前时间的5-10分钟后,如果命令正常执行了就可以再改为想要的执行周期。

  SHELL=/bin/bash
  PATH=/home/mastodon/.rbenv/shims:/home/mastodon/.rbenv/bin:/usr/local/bin:/usr/bin:/bin

  ###
  ### Mastodon cronjobs for media cache purging
  ###
  RAILS_ENV=production
  10 * * * * cd /home/mastodon/live && bin/tootctl media remove

重启crontab

sudo service cron restart

然后蹲等到设置的时间,之后查看运行状态。

查看crontab是否正确运行

有两种方式, 第一种:

systemctl status cron.service

第二种,查看log:

cat /var/log/cron.log

比较推荐第二种。如果发现没有log文件,需要启动cron log记录,按照下面步骤进行:

  1. 打开conf文件
sudo vim /etc/rsyslog.d/50-default.conf
  1. 找到cron.* /var/log/cron.log 这行,把前面的注释去掉。
  2. 重启rsyslog: sudo service rsyslog restart
  3. 查看log。

如果log中出现(CRON) info (No MTA installed, discarding output),则需要安装和启动mail服务:

sudo apt-get install postfix
sudo service postfix start

选择local,名字随意填,之后crontab的日志就也可以用tail /var/spool/mail/mastodon

完成!