如何在ROS中检查保存log的文件夹有多大

描述

检查log文件夹占用空间

roslaunch这个python包还负责检查保存log的文件夹有多大。在ros_comm-noetic-develtoolsroslaunchsrcroslaunch_ init _.py文件中的main函数里,有以下语句。

看名字就知道是干啥的了。

rlutil.check_log_disk_usage()

再打开同一路径下的rlutil.py,发现它又调用了rosclean包中的get_disk_usage函数。

我们发现,这个函数里直接写死了比较的上限:disk_usage > 1073741824,当然这样不太好,应该改为可配置的。

数字1073741824的单位是字节,刚好就是1GB(102 4 3 1024^31024 3byte)。

我们要是想修改log文件夹报警的上限,直接改这个值即可。

def check_log_disk_usage():
    """
    Check size of log directory. If high, print warning to user
    """
    try:
        d = rospkg.get_log_dir()
        roslaunch.core.printlog("Checking log directory for disk usage. This may take a while.nPress Ctrl-C to interrupt") 
        disk_usage = rosclean.get_disk_usage(d)
        # warn if over a gig
        if disk_usage > 1073741824:
            roslaunch.core.printerrlog("WARNING: disk usage in log directory [%s] is over 1GB.nIt's recommended that you use the 'rosclean' command."%d)
        else:
            roslaunch.core.printlog("Done checking log file disk usage. Usage is < 1GB.")            
    except:
        pass

我们刨根问底,追查rosclean.get_disk_usage(d)是如何实现的。

这个rosclean包不在ros_comm里面,需要单独下载。

打开后发现这个包还是跨平台的,给出了Windows和Linux下的实现。

如果是Windows系统,用os.path.getsize函数获取文件的大小,通过os.walk函数遍历所有文件,加起来就是文件夹的大小。

如果是Linux系统,用Linux中的du -sb命令获取文件夹的大小。哎,搞个机器人不仅要学习python,还得熟悉Linux,容易吗?

函数

主节点会获取用户设置的ROS_MASTER_URI变量中列出的URI地址和端口号(默认为当前的本地IP和11311端口号)。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分