rosbag_clean.go 897 B

12345678910111213141516171819202122232425262728293031
  1. package svc
  2. import (
  3. "cicv-data-closedloop/kinglong/common/cfg"
  4. "cicv-data-closedloop/kinglong/common/log"
  5. "cicv-data-closedloop/kinglong/common/util"
  6. "time"
  7. )
  8. // BagCacheClean 保证本地缓存的包数量不超过设定值
  9. func BagCacheClean() {
  10. log.GlobalLogger.Info("启动清理缓存goroutine维护data目录内的bag包数量。")
  11. for {
  12. // 收到自杀信号
  13. if signal := <-ChannelKillDiskClean; signal == 1 {
  14. return
  15. }
  16. // 1 ------- 每10秒清理一次 -------
  17. time.Sleep(time.Duration(10) * time.Second)
  18. // 2 ------- 获取目录下所有bag包 -------
  19. bags := util.ListAbsolutePathWithSuffixAndSort(cfg.CloudConfig.BagDataDir, ".bag")
  20. // 3 如果打包数量超过n个,删除最旧的包{
  21. if len(bags) > cfg.CloudConfig.BagNumber {
  22. diff := len(bags) - cfg.CloudConfig.BagNumber
  23. for i := 0; i < diff; i++ {
  24. util.DeleteFile(bags[i])
  25. }
  26. }
  27. }
  28. }