rosbag_clean.go 1.1 KB

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