zoukankan      html  css  js  c++  java
  • 将垃圾送入无底洞,顺便整理dev知识

      相信用过Linux的童鞋们都用过crontab来做定时任务,不需要额外的安装程序和配置,一条简单的语句搞定定时任务,但是小伙伴们发现了没,如果你的定时任务执行频率很高而且会产生大量的输出的话,你的老爷机就会逐渐衰弱,最终崩溃,吼吼,因为任务执行过程中产生的输出已经把你的内存吃光了。

      怎么办呢?

      Linux中有个目录叫做“dev”,这个词是“device”的缩写,意思为“设备”,这个目录中包含所有Linux系统中使用的外部设备,我们都知道,Linux中设备都是被当作文件对待的,所以这个目录下面都是一些个文件,每个文件实际上就是一个设备接入的一个端口,通过查阅相关资料了解到这些文件名所代表的含义如下:

     文件  说明
    /dev/hd[a-t] IDE设备
    /dev/sd[a-z] SCSI设备
    /dev/fd[0-7] 标准软驱
    /dev/md[0-31] 软raid设备
    /dev/loop[0-7] 本地回环设备
    /dev/ram[0-15] 内存
    /dev/null 无限数据接收设备,相当于黑洞
    /dev/zero 无限零资源
    /dev/tty[0-63] 虚拟终端
    /dev/ttyS[0-3] 串口
    /dev/lp[0-3] 并口
    /dev/console 控制台
    /dev/fb[0-31] framebuffer
    /dev/cdrom => /dev/hdc
    /dev/modem => /dev/ttyS[0-9]
    /dev/pilot => /dev/ttyS[0-9]
    /dev/random 随机数设备
    /dev/urandom 随机数设备

      别的都比较简单啦,有意思的是/dev/null和/dev/zero这两个,/dev/null是一个无底洞,任何输入都会被直接抛弃,而/dev/zero可以不断的产生空字符,可以用来产生具有特定大小的空文件。

      我们需要用到的就是/dev/null这个家伙,把计划任务产生的所有输出都丢到这个东东里面,如下

    程序 > /dev/null

      但是千万注意了哦,这个只是把标准输出放入无底洞,如果程序执行过程中输出错误信息还是会在内存里到处扔的,那怎么办呢?

      补习定向输出相关知识:

        >和>>都是重定向输出
        1> 指标准信息输出路径(也就是默认的输出方式)
        2> 指错误信息输出路径
        2>&1 指将标准信息输出路径指定为错误信息输出路径(也就是都输出在一起)

      所以知道该怎么办了吧!

    程序 > /dev/null 2 > &1

      另外,在使用crontab的时候经常有这么个诡异问题:脚本写完测试运行好好的,但是加入到计划任务就抽风了。

      其实通常这都是由于crontab执行的时候没有引入环境变量引起的,要在脚本的上面(最好是第二行)引入环境变量哦~~

      在crontab调用的脚本中写上如下语句来代入环境变量:

    . /etc/profile
    . /home/用户名/.profile #有时候是下面这个
    . /home/用户名/.bash_profile

             本文章系受著作权法保护,未经著作人同意,不得盗用;使用或引用本文章内容请注明作者名、原地址:书中叶http://www.cnblogs.com/libook

  • 相关阅读:
    redies安装
    跟我一起学koa之在koa中使用mongoose(四)
    mongoDB可视化工具RoBo 3T的安装和使用
    跟我一起了解koa之koa洋葱圈模型(二)
    跟我一起了解koa之koa的cookie(三)
    跟我一起了解koa之koa-generator(一)
    2进制数转成10进制
    koa中同步与异步的写法
    bootstrap-内联表单 水平(横向)表单 响应式图片 辅助类 [转]
    Bootstrap 杂记
  • 原文地址:https://www.cnblogs.com/libook/p/3442180.html
Copyright © 2011-2022 走看看