有时候在写脚本的时候,遇到一些字符串的变量,会有换行等需要整体替换,例如需要把换行全部替换成\n Shell下可以使用真是表达式的方式来替换:${varName//$'\n'/\\n},例子如下: msg="第一行 第二行 第三行" msg=${msg//$'\n'/\\n} echo $msg # 会输出:第一行\n第二行\n第三行 说明: ${...} - 表示利用正则表达式替换 varName - 变量 // - 表示替换... $'\n' - 需要替换的字符 / - 替换成... \\n - 需要替换成的字…

2022-06-24 0条评论 38点热度 0人点赞 admin 阅读全文

有时候Linux下运行的程序并不一定是一个服务,但是我们希望能监测它的运行状态,例如是否进程还在运行,如果没有运行,发出警报,或者自动启动,进而能保持程序的持续运行。 我们可以想办法写一个脚本来监测,然后可以做到定时任务(crontab)里去,例如每个1分钟监测一次。 以下是脚本内容,可以将替换成再次启动程序或你的逻辑。 #!/bin/bash # pgrep -f "vdcserver" 不能这样使用,不然就监测到本身也是一个符合的进程,导致误判 if pgrep -x "vdcserver" > /dev…

2022-06-12 0条评论 53点热度 0人点赞 admin 阅读全文

Linux环境Shell下需要检查某个URL返回的状态代码,例如200,说明正常,否则说明异常,需要发送提醒、重新启动等等操作 简单的脚本举例如下(以返回代码是200正常,否则重启某个服务): status_code=$(curl --write-out %{http_code} --silent --output /dev/null http://127.0.0.1:8182/some_status) if [[ "$status_code" -ne 200 ]] ; then echo "program not…

2022-05-30 0条评论 69点热度 0人点赞 admin 阅读全文

Linux下查看进程状态可以使用ps命令,例如,可以看到PID或者CPU、内存使用率等。 如果想要找到特定的程序的进程,那么可以配合使用grep查找出特定的进程PID,因为在执行shell脚本的时候,本身自己也是一个进程,如果用grep很有可能把自己也列出来,所以需要如下方式: (把name换成具体的关键词,使用grep -v grep把自己排除掉) ps -ef | grep "name" | grep -v grep | awk '{print $2}' 这个例子就是赋值给PID变量: PID=$(ps -ef…

2022-05-25 0条评论 80点热度 0人点赞 admin 阅读全文

Linux的Shell时间和格式化,可以用在自动备份脚本中,有关Linux备份的示例,可以参考:https://blog.terrynow.com/2020/12/29/linux-bash-backup-script/ # 当前日期,格式化成类似:2021-12-20 nowdate=`date +%Y-%m-%d` echo $nowdate # 获得当前时间,格式类似:20220108-092211 nowdatetime=`date +%Y%m%d-%H%M%S` echo $nowdatetime 获得多…

2022-01-08 0条评论 134点热度 0人点赞 admin 阅读全文

Linux下,列出文件和大小的命令是ls -lh,不过有个问题,显示的文件大小的时候,都是4.0K,文件夹下面还有很多文件否没有列入统计大小,这时候,要用到这个命令: du -sh * 问题解决!

2021-05-02 0条评论 653点热度 0人点赞 admin 阅读全文

我们平时在Linux的shell上查看开发程序输出日志的时候(一般用cat或者tail -f /path/to/logfile),默认看到的都是一种颜色的,在IDEA里开发的时候,我们发现,不同的日志级别(DEBUG/INFO/WARN/ERROR)输出的日志颜色不一样,这样就一目了然能看到哪些日志比较重要或要重点关注。 有关tail的基础用法,请看:https://blog.terrynow.com/2021/03/15/linux-shell-tail-head-usage-sample/ 实现原理很简单:我们…

2021-03-29 0条评论 1655点热度 0人点赞 admin 阅读全文

本篇介绍下,如何在Linux下,和端口有关的命令的操作,CentOS、Ubuntu等主流Linux都是可以的,甚至在MacOS的Terminal下也能使用。 主要使用到的命令是netstat,首先检查系统里有没有netstat,如果没有的话,请安装net-tools #CentOS等系统,使用yum安装 yum install net-tools #Ubuntu等系统,使用apt-get安装 apt install net-tools 国际惯例,上命令演示,说明写在注释里。 # 查看总体端口使用情况, # Stat…

2021-03-17 1条评论 688点热度 0人点赞 admin 阅读全文

我们在查看日志的时候,往往只是需要查看日志的最后的部分,或者日志产生新的内容,才显示出来,利用tail命令就可以很好的实现这部分功能 会把 logfile 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 logfile 更新就可以看到最新的文件内容。 # 实时显示xxx.log更新的内容 tail -f /var/log/xxx.log # 显示xxx.log最后100行内容 tail -n 100 /var/log/xxx.log # 显示日志最后10个字符 tail -c 10 /var/log/xxx.…

2021-03-15 1条评论 1873点热度 0人点赞 admin 阅读全文

在写Shell脚本的时候,有时候要替换、删除某个文件中的内容,但是又不方便用vim做交互的动作,这就可以用到『sed』命令来做批量的替换、插入、删除 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 常用选项(options): -n∶使用安静(silent)模式。在一般sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来。 -e∶直…

2021-03-14 1条评论 3057点热度 0人点赞 admin 阅读全文