商业网站,台州椒江区热销企业网站搭建,新网站网页收录,建设网站的那个公司好一些终端命令、程序、脚本#xff08;crontab#xff09;中#xff0c;常会遇到#xff0c;/dev/null 21 出现#xff0c;这具体代表什么意思呢#xff0c;接下来会一步步操作#xff0c;大概理清楚流程及作用#xff08;咳咳#xff0c;那个…一些终端命令、程序、脚本crontab中常会遇到/dev/null 21 出现这具体代表什么意思呢接下来会一步步操作大概理清楚流程及作用咳咳那个一些linux内置的方法咱就不理了
先解释一下字面意思
/dev/null 就是重定向将结果标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。1/dev/null 也是一样的因为不写的话默认是 1
21 就是将 标准错误输出重定向到标准输出因为之前标准输出已经重定向到了空设备文件所以标准错误输出也重定向到空设备文件。通俗点说 表示等同于的意思21表示2的输出重定向等于于1
原由
shell脚本
注shell是系统的用户界面提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。shell实际上可以理解为一个命令解释器既是一种命令语言又是一种程序设计语言。
对于某些后台来说一般是输入某些参数来进行计算或查询或者是定时任务那么我们有时候就会需要知道脚本运行的结果而这个结果是直接输出到控制台还是输出到一个文件内有时在运行的过程中会有堆栈的异常外部接口调用的情况这些异常的结果我们一般都会写到日志内这就是shell重定向也就是这篇文章要讲的内容。
再讲重定向之前还需要知道一些linux的基础。下面会一一讲解。
linux标准文件描述符
文件描述符类型默认情况对应文件句柄位置0标准输入缩写STDIN从键盘获得输入/proc/self/fd/01标准输出缩写STDOUT输出到屏幕即控制台/proc/self/fd/12错误输出缩写STDERR输出到屏幕即控制台/proc/self/fd/2
我们平常执行shell命令都是将命令输入然后结果显示到控制台但也可以通过更改文件描述符的指向来将结果输入到我们自定义的文件1 代表标准结果输出2 代表错误输出举个例子。
输出重定向
cd /home/script/ /home/php5210/bin/php dis_file.php /dev/null 21
这个就是在机器上有 /home/script/ 路径 由于机器没有安装php环境变量就算安装了为了稳妥起见也会选择这种方式所以 /home/php5210/bin/php 准备执行 dis_file.php 文件
至于最后的两个 /dev/null
其中 代表 输入到 的意思将左边内容输入到右边。 表示追加。
注一个 是生成文件若以前有文件会删除重新覆盖本次执行的内容 这个是输入正常标准结果接下来试试错误的输出结果到文件2 日志名称 输入重定向
命令介绍command filename以filename文件作为标准输入command 0filename同上command delimiter从标准输入中读入直到遇到delimiter分隔符
输出重定向是 追加是 同理 输入重定向就是 号追加就是 看例子 有服务器的话可以自己试一下。
正题
还是上面的例子重新写一下
cd /home/script/ /home/php5210/bin/php dis_file.php /dev/null 21 /dev/null 21 拆成两个貌似跟文章开始解释的重复凑合着看吧
1、 /dev/null 相当于 1 /dev/null就是将标准输出重定向到 /dev/null /dev/null 表示Linux的空设备文件 写到里面就找不着等于没写不用挣扎了真的找不到的。
2、 21 就是重定向绑定是用来连接的就是绳子将两个输出标准输出、错误输出绑定到一块一根绳儿上的蚂蚱。这样一来错误输出嘿嘿你也找不到不需要错误输出。 扩展一下 /dev/null 21 21 /dev/null /dev/null 2 /dev/null 区别
我们最常见的是第一种写法 /dev/null 21 这个不做解释了直接看第二种写法
21 /dev/null
linux在执行shell命令之前已经默认会确定好输出位置并从左往右执行重定向命令所以对于这个来说错误输出仍是会输出到屏幕不会丢弃 /dev/a.log 2 /dev/a.log
如果连续写两个这个有可能会出现乱码应该是有极大可能因为会强占通往a.log的管道所以尽量不要这么搞无解老老实实按照正常写的来吧代码嘛最强大的ctrlc ctrlv