首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过bash脚本跟踪日志,而不是脚本结束?

通过bash脚本跟踪日志,可以使用以下方法:

  1. 使用重定向操作符将脚本的输出重定向到日志文件中:./script.sh >> log.txt上述命令将脚本的输出追加到log.txt文件中。如果文件不存在,则会创建该文件。
  2. 使用Linux的syslog服务来记录日志:logger "Log message"上述命令将"Log message"记录到系统的syslog中。可以使用syslog配置文件来指定日志的存储位置和其他设置。
  3. 使用logrotate工具来管理日志文件的轮转和压缩:/etc/logrotate.d/script在上述路径下创建一个名为script的文件,并在其中定义日志文件的轮转规则。可以设置日志文件的最大大小、保留的历史日志数量等。
  4. 使用第三方日志管理工具,如ELK(Elasticsearch、Logstash和Kibana): ELK是一个流行的日志管理解决方案,可以实时收集、分析和可视化日志数据。可以使用Elasticsearch作为日志存储引擎,Logstash作为日志收集和处理工具,Kibana作为日志可视化界面。

总结:

通过bash脚本跟踪日志的方法有多种,可以根据需求选择合适的方法。以上提供的方法是其中的一些常见方式,可以根据实际情况进行选择和配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用 JS 编写自动化脚本不是 bash

当然从这个角度来看 bash 也差不多,但 JS 在这里起码并不比它差。 在 JS 优先的团队中使用 JS 进行自动化脚本的编写,是最合乎逻辑的选择。...runtime 大概率已经安装了 你的 bash 脚本即使成功运行了,麻烦也没有结束,因为它通常会在另一台机器上失败(说你呢,Alpine Docker 容器……)。...用 Node 的话,丢失的 runtimes 的问题非常少见 - CI 机器无论如何都可以运行 npm / yarn,这些和 node 绑在一起。...在 bash 中,有两个麻烦的选项可以与基于 node 的工具集成: 通过奇怪的选项格式调用 CLI。 编写一个最小的 JS 包装器来调用 node API,从 bash 调用它。...有时候你更喜欢通过 CLI 不是 node API 使用其他工具。也可以 —— 在 node 中,这可以通过 child_process 异步且跨平台地完成!

1.9K50

在 Shell 脚本中执行语法检查调试模式

脚本调试系列 Linux 中启用 Shell 脚本的调试模式 在 Shell 脚本中执行语法检查调试模式 在 Shell 脚本跟踪调试命令的执行 ---- 概述 ?...写完脚本后,建议在运行脚本之前先检查脚本中的语法,不是查看它们的输出以确认它们是否正常工作。 在本系列的这一部分,我们将了解如何使用语法检查调试模式。...要展示这个如何工作,下面是一个示例脚本来批量将 PNG 图片转换成 JPG 格式。 将下面内容输入(或者复制粘贴)到一个文件中。 #!...,我们看到我们的脚本中有一个错误,for 循环缺少了一个结束的 done 关键字。...file 我们可以同时结合 verbose 模式和语法检查模式: $ bash -vn script.sh ---- 通过修改脚本的首行来启用脚本检查 另外,我们可以通过修改脚本的首行来启用脚本检查,如下面的例子

1.9K20

解决问题,别扩展问题

由于需要考虑不同请求日志的穿插问题,又加上用久了 PHP 的数组和 Java 的 map 形成的惯性思维,又加上我最近学习的 bash 的关联数据用法,我决定把 start 日志和 end 日志,拆分为两个文件...最后再遍历结束时间数组(arr_end),并查找开始时间数组内的值,进行减法运算,将差值输出到另一个文件里。 这样,写出的脚本就是这样: 脚本 #!...那么有没有办法让我在遍历结束日志的时候能很轻松地找到开始日志里面对应的那条请求日志呢?...我忽然注意到脚本里的一个循环 for j in `seq $i $total`, 这个语句也创建了子进程,那它跟主进程之间的交互就是问题了所在了, 在脚本运行初期,$i 非常小, $total 是结束日志的总行数...我使用 strace 跟踪了这个脚本,发现有大量的此类系统调用: ? ? 总算破案了。 小结 ---- 在这个问题的解决上,我的做法有很多不对的地方。

88310

Linux中高效编写Bash脚本的10个技巧

来做字符串比较,例如: value1=”tecmint.com” value2=”fossmint.com” if [ "$value1" = "$value2" ] 7、 用 $(command) 不是老旧的...用 $(command) 不是引号 command 来做命令代换。 这种做法也是 shellcheck tool (可针对 shell 脚本显示警告和建议)所建议的。...通过阅读下面给出的指南来掌握此技巧: 1、如何在 Linux 中启用 Shell 脚本调试模式(https://linux.cn/article-8028-1.html) 2、如何在 Shell 脚本中执行语法检查调试模式...(https://linux.cn/article-8045-1.html) 3、如何在 Shell 脚本跟踪调试命令的执行(https://linux.cn/article-8120-1.html)...本文到这就结束了,你是否有一些其他更好的 bash 脚本编程经验想要分享?

1.6K50

使用bash编写Linux shell脚本--调试和版本控制

外壳调试的特点 Bash 有几个开关和选项对于跟踪调试脚本是非常有用的。“ -n ”开关可以使你不用运行脚本就可以检查脚本语法的正确性。通常在开发期间使用这个开关来检查脚本的语法。...加号表示脚本如何进行嵌套的。最后四行是 Bash 执行所有的替换和扩展之后的脚本段。注意复合命令(例如: if )被省去了(看列表 8.2 )。 列表 8.2 bad.bash #!...CVS 将该脚本的版本号保存为 2.1 。 在任何时候,你都可以获取脚本或整个项目的日志。 CVS 日志命令显示了所有相关日志条目、脚本和版本号。...除了真实的时间用度,该统计还返回脚本用于系统资源的时间不是脚本运行命令的时间。 显示结果的格式可以使用 TIMEFORMAT 变量进行设置。...n         — intermix-type (-p)— 运行 packing 选项应用到单个文件不是所有的文件。

2.9K111

Linux 中高效编写 Bash 脚本的 10 个技巧

脚本中使用函数41% -6、 字符串比较时用 = 不是 ==49% -7、 用 \$(command) 不是老旧的 `command` 来做代换55% -8、 用 readonly 来声明静态变量...command2; } # 或 check_root(){ } 写成单行代码时,每个命令后要用终止符号: check_root(){ command1; command2; } 6、 字符串比较时用=不是...用不是引号`command`来做命令代换。 这种做法也是shellcheck tool[3](可针对 shell 脚本显示警告和建议)所建议的。...通过阅读下面给出的指南来掌握此技巧: 如何在 Linux 中启用 Shell 脚本调试模式[4] 如何在 Shell 脚本中执行语法检查调试模式[5] 如何在 Shell 脚本跟踪调试命令的执行[6]...-链接 [5]: 如何在 Shell 脚本中执行语法检查调试模式 -链接 [6]: 如何在 Shell 脚本跟踪调试命令的执行 -链接 [7]: Aaron Kili -链接 (adsbygoogle

1.7K30

Shell 从日志文件中选择时间段内的日志输出到另一个文件

所以,相关人员希望能够查询某个时间段内的日志。我简单些了一个脚本来实现了这个效果。 不过我的实现不是最佳方案,性能上还有很大的优化空间,但我目前水平有限,没有想到更好的方法。...3.log | while read line; do # 每读取一行,就在终端打一个#号,以便我知道这脚本还活着 :) # -n 是让 echo 的内容在前面追加,不是换行 # 在 mac...但是遇到了脚本兼容性的问题。我没搞明白为什么 sh log.sh 运行方式下 echo -n 这个参数会出问题。但是在 bash log.sh 的情况下是按照我的理解正常输出的。...每读取一行,就在终端打一个#号,以便我知道这脚本还活着 :) # -n 是让 echo 的内容在前面追加,不是换行 # 在 mac 下面,用 sh log.sh 的方式运行会出错,不知道为什么...参见 Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 以上脚本均在 mac 下测试通过,在 linux 下可能会有稍许不同。

1.7K80

shell变量详解

我们讨论一下计算机是如何通过让我们人类快速将数据存在内存,如何从内存中读出数据的。我们研究过变量后就明白了。 变量:变量是编程中最常用的一种临时在内存中存取数据的一种方式。...给你使用 同时在内存跟踪表中记录 该地址被占用不在分给别人,同时在系统中建立映射机制 比如:变量名 STRING1=‘ABC’ name0x5 d、释放内存 从内存跟踪表中将记录删除...1个字节长度(\0是一个 特殊字符,代表字符串结束)。...,脚本执行完毕或终端结束变量失效。...变量类型 作用域 生命周期 本地变量 当前shell环境(子shell不能用) 脚本结束或终端结束 环境变量 当前shell或者子shell 当前进程结束 全局变量 所有用户及shell环境 关机 内置变量

55720

shell流程控制-if判断语句

一、if介绍 如何写一个高可用性的脚本,赋予脚本智能化,赋予脚本执行逻辑。...该语句翻译成汉语大意如下: 假如 条件为真 那么 执行commands代码块 结束 通过一段代码来演示一下吧,判断 当前用户是不是root,如果不是那么返回”ERROR: need to...该语句翻译成汉语大意如下: 假如条件为真 那么 执行commands1代码块 否则 执行commands2代码块 结束 通过一段代码演示一下吧,判断当前登录用户是管理员还是普通用户...通过一段代码演示一下吧,通过一个脚本,判断两个整数的关系 案例需求 判断内存的使用率 60以下 ok 60以上 黄色警告 70以上 橙色严重警告 80以上 红色警告...7、写一个mysql binlog备份脚本,要求每天0点0分,计算机自动备份前一天的binlog日志,打包后发送给备份服务器。

30710

【Gitlab】371- GitLab从安装到全自动化备份一条龙

1.工具 •crontab[2]•shell[3]•expect[4] 1.操作 •如果不是root用户请在所有命令前+sudo•新老服务器gitlab版本保持一致•旧服务器用的是gitlab-ee_...出现这个radis的问题,不知道如何解决,有大佬知道,求告知,但是不影响备份 ?...重新加载cron配置文件 sudo /usr/sbin/service cron reload #重启cron服务 sudo /usr/sbin/service cron restart 注意:6之前是0,不是...创建Shell定时远程备份脚本 在旧服务器上创建定时远程备份脚本 创建自动scp的脚本日志目录 cd /var/opt/gitlab touch auto_scp.sh cd /backups sudo...执行命令,不要sudo执行 bash auto_scp.sh 此时不需要密码 2. 查看日志文件 ? 3. 发现新服务器上已经出现了备份 ?

2K30

大神教你DIY高性能运维堡垒体系

的操作日志 上述每一个功能列表都是经过多次实践出来的需求,虽然不是非常完美,但是如果不是刻意来逃避日志记录的话,基本可以满足大家的需求,上述的记录对应的人员是指多个人同时使用同一个系统帐号的情况,比如root...别说有人还在利用密码登录Linux服务器,太不专业了-_- -------- 在这个文件里面~/.ssh/authorized_keys加key的时候,第三列设置为具体的人员,我们是用工号@姓名拼音的模式,然后通过脚本进行处理即可...脚本路径 /etc/bash_ywjt,内容: 上面的逻辑比较简单,首先我们还需要开启sshd的debug模式,在/etc/ssh/sshd_config文件加入: 还可以针对复杂的情况进一步的进行逻辑处理...Mysql操作日志 很早以前找过相关的mysql插件,也尝试过audit之类的方案,但结果不是我们需要的效果,我们需要的是运维方面在服务器上的mysql操作,和mysql的binlog等日志不是同一个事情...想到我们已经有bash审核了,-e执行时候可以忽略记录,但是如果在mysql里面通过source命令引用sql语句时候同样有这个问题,所以还得继续改代码。

1.1K60

Linux Shell脚本面试25问

2 如果结束状态不是0,说明命令执行失败。 Q:7 在shell脚本如何比较两个数字 ? 答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子如下: #!...Q:9 shell脚本中continue命令的作用 ? 答:continue命令不同于break命令,它只跳出当前循环的迭代,不是整个循环。.../bin/bash”的作用 ? 答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫做hash,! 叫做 bang。...它的意思是命令通过 /bin/bash 来执行。 Q:14 shell脚本中for循环语法 ?...Q:16 shell脚本如何比较字符串? 答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。 Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?

1.5K50

Tomcat进程意外退出,元凶居然是他...

作者 | 宏江 出品 | 并发编程网(ifeve.com) 节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory...: 1) tomcat不是通过脚本正常关闭(viaport: 即通过8005端口发送shutdown指令) 因为正常关闭(viaport)的话会在 pause 之前有这样的一句warn日志: org.apache.catalina.core.StandardServer...而非交互模式下,通常是不需要作业控制的,所以作业控制在非交互模式下默认也是关闭的(当然也可以在脚本通过选项set -m打开作业控制选项)。...不开启作业控制的话,脚本里的后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员的传播,因为对它来说这个信号已经没有意义。...回到tomcat的例子,catalina.sh脚本通过start参数启动的时候,就是以非交互方式后台启动,java进程也被shell设置了忽略SIGINT信号,因此在ctrl-c结束test.sh进程时

3.9K10

必会的 24 道 Shell 脚本面试题

2 如果结束状态不是0,说明命令执行失败。 Q:7 在shell脚本如何比较两个数字 ? 答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子如下: #!...Q:9 shell脚本中continue命令的作用 ? 答:continue命令不同于break命令,它只跳出当前循环的迭代,不是整个循环。.../bin/bash”的作用 ? 答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫做hash,! 叫做 bang。...它的意思是命令通过 /bin/bash 来执行。 Q:14 shell脚本中for循环语法 ? 答:for循环的基础语法: for 变量 in 循环列表 do 命令1 命令2 …....Q:16 shell脚本如何比较字符串? 答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。 Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?

1K30

面试linux运维一定会问到Shell脚本这24个问题

2 如果结束状态不是0,说明命令执行失败。 Q:7 在shell脚本如何比较两个数字 ? 答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子如下: #!...Q:9 shell脚本中continue命令的作用 ? 答:continue命令不同于break命令,它只跳出当前循环的迭代,不是整个循环。.../bin/bash”的作用 ? 答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫做hash,! 叫做 bang。...它的意思是命令通过 /bin/bash 来执行。 Q:14 shell脚本中for循环语法 ? 答:for循环的基础语法: for 变量 in 循环列表 do 命令1 命令2 …....Q:16 shell脚本如何比较字符串? 答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。 Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?

1.7K11

必会的 24 道 Shell 脚本面试题

2 如果结束状态不是 0,说明命令执行失败。 Q:7 在 shell 脚本如何比较两个数字 ? 答:在 if-then 中使用测试命令( -gt 等)来比较两个数字,例子如下: #!...Q:9 shell 脚本中 continue 命令的作用 ? 答:continue 命令不同于 break 命令,它只跳出当前循环的迭代,不是整个循环。.../bin/bash” 的作用 ? 答:#!/bin/bash 是 shell 脚本的第一行,称为释伴(shebang)行。这里#符号叫做 hash,! 叫做 bang。...它的意思是命令通过 /bin/bash 来执行。 Q:14 shell 脚本中 for 循环语法 ? 答:for 循环的基础语法: for 变量 in 循环列表 do 命令1 命令2 …....Q:16 shell 脚本如何比较字符串? 答:test 命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。

8.8K30

Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录

root -p test > backup_sunday_1_PM.sql 对于InnoDB将--lock-all-tables替换为--single-transaction --flush-logs为结束当前日志...每日定时使用 MySQLadmin flush-logs来创建新日志,并结束前一日志写入过程。...--lock-tables 它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,不是一下子锁定全部库下的表。...--quick,-q 该选项在导出大表时很有用,它强制 MySQLdump 从服务器查询取得记录直接输出不是取得所有记录后将它们缓存到内存中。...先执行的是增量备份脚本,然后执行的是全量备份脚本: [root@test-huanqiu ~]# crontab -e #每个星期日凌晨3:00执行完全备份脚本 0 3 * * 0 /bin/bash

4.2K91

Tomcat 进程意外突崩,元凶居然是它...

点击上方“码农沉思录”,选择“设为星标” 优质文章,及时送达 节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory...: 1) tomcat不是通过脚本正常关闭(viaport: 即通过8005端口发送shutdown指令) 因为正常关闭(viaport)的话会在 pause 之前有这样的一句warn日志:...而非交互模式下,通常是不需要作业控制的,所以作业控制在非交互模式下默认也是关闭的(当然也可以在脚本通过选项set -m打开作业控制选项)。...不开启作业控制的话,脚本里的后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员的传播,因为对它来说这个信号已经没有意义。...回到tomcat的例子,catalina.sh脚本通过start参数启动的时候,就是以非交互方式后台启动,java进程也被shell设置了忽略SIGINT信号,因此在ctrl-c结束test.sh进程时

93610

shell(二)

-服务器 需求:我们通过传入的参数不同,实现不同的功能。...5.生产脚本 5.1大型脚本编写 一般的脚本大家都会写了,那么对于线上服务器的大型脚本如何实现的呢?我们先来看一下流程: 1.编写脚本框架。...(处处有框架,脚本也不例外,但是此框架需要自己实现) 2.用命令对脚本框架进行填充。 3.完善功能(增加日志功能;增加锁文件功能;增加主函数逻辑;增加参数安全措施)。...5.2.2复杂脚本编写 手工执行的命令一定要可执行。 根据发布流程编写脚本的框架。 将手工执行的命令填充到对应的框架函数内部。 增加日志功能,方便跟踪脚本历史执行记录。 主函数中逻辑流程控制好。...日志的输出。 脚本的传参和函数的传参要区别对待。 ?

95320
领券