Linux 常用一些命令(一)

前言

最近在工作接触到一些linux 操作命令,这里将其总结下来作为参考。

内容

一、crontab 常用定时任务

//crontab -l 展现linux cron 定时任务执行的列表

//crontab -e 展现linux cron 定时任务的编辑页面,wq就会进行保存,并且生效

crontab -l

crontab -e

在这里插入图片描述

crontab 从左到右依次是 分时日月周

03 * * * *    每小时03分执行

01 02 * * * 每天两点01分执行

01 02 3 * * 每个月3号2点01分执行

01 02 3 1 * 每年1月3号2点01分执行

01 02 * * 0 每周日的2点01分执行

01,02,03 * * * 每小时 01 02 03分执行

01,02,03 1,2,3 * * 每天1 2 3点的  01 02 03分执行

*/10 * * * *     每隔10分执行

00 */2 * * *     每隔两小时执行

00 * */2 * *     每隔两天执行

2 8-20/3 * * * 从8点开始 每隔3个小时的02分执行一次

当设置定时任务没有按预定时间来进行执行:

1、在crontab里调度运行,结果发现没有结果
当没有设置输出日志地方【这种情况强烈不推荐】,可以查看/var/log/messages 日志,发现crontab有执行,但是失败。

手动运行都是可以的,放在crontab里边发现就不能运行了。
处理方法:脚本中不要采用相对路径,全部改为绝对路径

2、 用crontab -uuser -e 进行编辑

   crontab -uuser -e 

3、 服务器时间与互联网时间不一致,需要修改服务器时间

修改完服务器时间后,必须重启crond.
/etc/init.d/crond restart (不一定在此目录) 或者 service crond restart

service crond restart

二、crontab 定时任务造成宕机

情景1:因cron错误触发sendmail进程发送告警邮件(没有配置邮件服务器),邮件发送失败,进而触发postdrop进程,这个操作会不断累积,最终导致内存/innode号资源不足;
情景2:postdrop失败会有警告信息生成,保存在/var/spool/postfix/maildrop,经过一段时间的累积,最终导致磁盘资源不足;

我们设置crontab 任务的时候一般会,执行的日志 通过 > /dev/null 2>&1 (&> /dev/null)直接给消除掉,第二种就是将产生的日志转移到我们需要保存一个目录,比如下面日志转移

三、2>&1和 >dev/null 2>&1 和 2>&1 >/dev/null

标准输入(standard input) 0 从键盘获得输入 /proc/slef/fd/0
标准输出(standard output) 1 输出到屏幕(即控制台) /proc/slef/fd/1
错误输出(error output) 2 输出到屏幕(即控制台) /proc/slef/fd/2

2>&1
2>&1意思就是把错误输出2重定向到标准输出1,也就是屏幕。标准输出就是默认输出到屏幕的故,错误和输出都默认到屏幕。

>/dev/null 2>&1
dev/null 在linux 是不存在位置, >/dev/null 省略1,完整表述应该是1 >/dev/null 意思就是把标准输出重定向到“黑洞”,2>&1 还把错误输出2重定向到标准输出1。 >/dev/null 2>&1 也就是标准输出和错误输出都进了“黑洞”。

2>&1 >/dev/null
乍眼看这两条命令貌似是等同的,但其实大为不同。刚才提到了,linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令。那么我们同样从左到右地来分析2>&1 >/dev/null。2>&1 意思就是把错误输出2重定向到标准输出1,也就是屏幕。>/dev/null 等同于1>/dev/null标准输出进了“黑洞”, 2>&1 >/dev/null 也就是标准输出进了黑洞,错误输出打印到屏幕。

注: dmesg 是存在目录 aa 存在
在这里插入图片描述

输入重定向
在理解了输出重定向之后,理解输入重定向就会容易得多。对输入重定向的基本命令如下:
command <filename 以filename文件作为标准输入
command 0<filename 同上
command <<delimiter 从标准输入中读入,直到遇到delimiter分隔符

我们这次以cat命令为例,如果cat后面没有跟文件名的话,那它的作用就是将标准输入(比如键盘)回显到标准输出(比如屏幕)上:

cat >>filetest 2>&1 <<END

cat cat后面没有跟文件名的话,那它的作用就是将标准输入,>>表示添加的意思,建立filetest文件,将输入到filetest 。当输入遇到END时,退出

在这里插入图片描述
cat >> filetest2 <filetest
将filetest 的内容作为输入转移到filetest2中
在这里插入图片描述

**四、sed 命令 **

sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 1020 行之间进行的,则『 10,20[动作行为] 』

function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

这里做例子示范:

sed -i ‘s/原字符串/新字符串/’ filetest 将 filetest 文件每行第一个字母换成新字符串
sed -i ‘s/原字符串/新字符串/g’ filetest 将 filetest 文件所有字母换成新字符串

注:@ 是特殊字符,需要在这里插入图片描述代替@

在这里插入图片描述

特定字符串的行前插入新行

sed -i '/特定字符串/i 新行字符串' filetest

在这里插入图片描述

特定字符串的行后插入新行

sed -i '/特定字符串/a 新行字符串' filetest

在这里插入图片描述

特定字符串的删除

sed -i '/字符串/d' filetest

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值