将垃圾送入无底洞,顺便整理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 > &
另外,在使用crontab的时候经常有这么个诡异问题:脚本写完测试运行好好的,但是加入到计划任务就抽风了。
其实通常这都是由于crontab执行的时候没有引入环境变量引起的,要在脚本的上面(最好是第二行)引入环境变量哦~~
在crontab调用的脚本中写上如下语句来代入环境变量:
. /etc/profile
. /home/用户名/.profile #有时候是下面这个
. /home/用户名/.bash_profile
本文章系受著作权法保护,未经著作人同意,不得盗用;使用或引用本文章内容请注明作者名、原地址:书中叶http://www.cnblogs.com/libook
将垃圾送入无底洞,顺便整理dev知识的更多相关文章
- .NET 垃圾回收机制要点整理
1. .NET资源分托管资源和非托管资源,对于托管资源,.NET GC可以很好的回收无用的垃圾,而对于非托管(例如文件访问,网络访问等)需要手动清理垃圾(显式释放). 2. 非托管资源的释放,.NET ...
- JavaScript杂谈(顺便也当知识积累)
JavaScript版本 JavaScript的普及使得其于1997年正式成为国际标准,其官方名称为ECMAScript 1999年定稿第三版ECMAScript标准,简称ES3 2009年重大改进的 ...
- Java虚拟机—垃圾回收算法(整理版)
1.概述 由于垃圾收集算法的实现涉及大量的程序细节.因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程.主要涉及的算法有标记-清除算法.复制算法.标记-整理算法.分代收集算法. 2 ...
- WinForm&&DEV知识小结
-------------------------------------------------------------------------------- 1.父窗体Form1中调用子窗体For ...
- JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
补充: 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 闭包的三个特性: 1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变 ...
- maven学习整理-进阶知识
在maven的阶知识主要学习的是maven在eclipse中的使用.依赖相关的问题.继承(父子工程).统一版本管理.聚合等相关知识 1.maven在eclipse中的使用 由上篇基础知识学习到怎样下载 ...
- 整理QTP知识之1
以下说明由网络其他文章整合而成. 一.关于QTP的说明 QTP是目前市场上占有率最高的一款自动化测试工具,也是每一位测试工作者最想掌握的工具之一,也是目前流行的基于GUI的功能自动化测试工具之一. Q ...
- java web dev知识积累
tomcat体系结构 可以从tomcat的server.xml文件中元素的层次结构来理解tomcat的体系结构: Server(可以视为tomcat本身)->经由connector可以有多个(c ...
- 最近公司遇到了APR攻击,顺便了解一下知识
原因及背景 最近公司遇到了APR攻击导致整个公司研发部.测试部.客服部.工程部等几个部门统一无法上网,TV(team viewer)无法使用,部署在公网的B/S架构系统系统无法访问,开发代码上传和下载 ...
随机推荐
- vim编辑器配置
原文链接:https://github.com/ma6174/vim http://my.oschina.net/swuly302/blog/156784?fromerr=itaFZFMb https ...
- Linux设备模型——设备驱动模型和sysfs文件系统解读
本文将对Linux系统中的sysfs进行简单的分析,要分析sysfs就必须分析内核的driver-model(驱动模型),两者是紧密联系的.在分析过程中,本文将以platform总线和spi主控制器的 ...
- 【转】Android Gson的使用
Android Gson 2014 年 05 月 22 日 android 目前的客户端大都有和服务端进行交互,而数据的格式基本就是json了,于是在Android开发中就经常用到json解析,方便的 ...
- JavaScript高级程序设计之数据类型
首先讲讲关于js文件放置的问题,如果把<script>放在head标签处,浏览器会先加载完该处的所有不使用defer属性的js文件再呈现页面的内容(浏览器在遇到body标签时才呈现内容), ...
- config windows virtual machine on mac
1.download virtualbox and related extension pack from http://www.oracle.com/technetwork/server-stor ...
- Android开源库--SlidingMenu左右侧滑菜单
如果说我比别人看得更远些,那是因为我站在了巨人的肩上. github地址:https://github.com/jfeinstein10/SlidingMenu 设置: 1.下载之后以依赖项的 ...
- R语言 rwordseg包的下载
在CRAN中没有,如果通过R下载经常会出错,使用以下地址下载后加载本地包 http://R-Forge.R-project.org/bin/windows/contrib/3.0/Rwordseg_0 ...
- linux嵌入式系统驱动程序的阻塞与异步
对于那些需要进程独占的设备,需要使用linux提供的阻塞编程.步骤如下: 1.在设备驱动程序中定义该设备的进程等待列多,并将其初始化 static wait_queue_head_t wait_que ...
- HDU 1158 Employment Planning
又一次看题解. 万事开头难,我想DP也是这样的. 呵呵,不过还是有进步的. 比如说我一开始也是打算用dp[i][j]表示第i个月份雇j个员工的最低花费,不过后面的思路就完全错了.. 不过这里还有个问题 ...
- POJ3592 Instantaneous Transference tarjan +spfa
链接:http://poj.org/problem?id=3592 题意:题目大意:给定一个矩阵,西南角为出发点,每个单位都有一订价值的金矿(#默示岩石,不成达,*默示时佛门,可以达到指定单位),队# ...