AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[watch](unix)

Martin Hope
futurewave
Asked: 2024-01-23 01:35:46 +0800 CST

监视命令:仅定期更新,而不是基于事件?(示例:每 2 秒 - 每次保存文件 x 时)

  • 4

我想要什么:使用 watch 命令运行命令 y,并且仅在命令 y 的输出发生更改时才更新 watch 命令。

想象一个带有 3 行 echo 输出的 bash 脚本

Hello world!
Hello universe!
Aloha multiverse!

我希望监视 bash 脚本,但只有当所述输出由于编辑脚本并随后保存而发生更改(因此修改日期)时,才应该发生更新。

我担心,像往常一样,默认情况下每 2 秒更新一次的 watch 命令,每天运行多个小时时,会过快地缩短存储磁盘的使用寿命。我的意思是,想象一下该命令会产生多少读/写操作。我觉得这样太浪费了。如果 watch 命令只是休眠,保存监视命令的行为会唤醒 watch,再次运行脚本,然后再次休眠,那就更好了。

我的意思是:自动相当于我们都知道的手工操作:1. 编写脚本,2. 然后保存它,3. 然后再次执行它以查看保存的更改是否按预期运行 - 重复。我的意思是为了看到变化,我们不会每 2 秒执行一次命令,而是基于事件只执行一次。

在编写脚本和执行脚本之间进行自动化的繁琐的不断切换的代价是否是不可避免的不断的间隔更新会因读写进程的过度增长而耗尽存储磁盘的寿命?

折衷方案可能是通过 -n 选项来延长间隔时间,例如每 30 秒一次,但 watch 命令无法以某种方式做得更好吗?

我的意思是,我已经考虑过,一旦文件发生更改,就可以让 watch 通过 -g 选项退出,但这不会改变 watch 上的任何内容,导致每 2 秒或其他间隔进行一次读取操作,直到发生更改,保持存储磁盘一直处于繁忙状态。

while 循环也有同样的问题,不是吗?或者这可能是解决方案:用 while 循环重建 watch 命令,使其真正基于事件(?),从而在开发脚本时最大限度地减少读写操作量?

这是关于效率、极简主义、尽可能节省资源。

watch
  • 1 个回答
  • 43 Views
Martin Hope
mkurz
Asked: 2022-02-24 07:29:47 +0800 CST

如何解决 Debian 11 上泄漏的文件观察程序?

  • 3

作为我工作的一部分,我使用几个不同的 nodejs 实时服务器,我的工具/工作流程中似乎存在某种泄漏,导致文件观察者随着时间的推移而积累,直到它们达到系统限制。然后我得到以下cli错误:

Error from chokidar (<path-to-folder>): Error:
 ENOSPC: System limit for number of file watchers reached, watch '<path-to-folder>/<filename>'

我发现以下命令应该返回使用的诡计观察者的数量:

find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | xargs cat | grep -c '^inotify'

它返回 515160,即使我似乎已经关闭了所有实时服务器。我有两组问题:

  1. 我该如何诊断?我可以获得所有已注册观察者的列表、他们的观察路径和相应的 PID 或类似的东西吗?
  2. 有没有办法让我把他们都杀了?杀死所有文件观察者是个好主意吗?我可以只杀死我的服务器注册的观察者吗?

我正在运行 Debian 11

debian watch
  • 1 个回答
  • 131 Views
Martin Hope
Anthony Kong
Asked: 2019-05-24 20:15:10 +0800 CST

如何在没有其他工具的情况下监视二进制文件是否已执行?

  • 0

我希望能够判断是否在 ubunutu 机器上调用了某个可执行文件。二进制文件将由 java 进程调用。我无权安装其他软件。

这是我所做的:

  • 启动iTerm
  • 登录到该框并开始运行watch "ps aux | grep png"(可执行文件的名称中包含字符串“png”)
  • 使用Session->Log函数记录 watch 命令的输出。

但是当我检查文件时,它充满了这样的符号:

^[[1;176H8^[[4;12H206^[[5d^H7^[[5;36H12^[[6;14H9^[[6;36H32^[[57;181H^[[1;175H30^[[4;13H10^[[5d^H^H11^[[6d^H^H13^[[6;34H1028^[[57;181H^[[1;176H2^[[4;13H59^[[5d^H^H60^[[5;36H88^[[    6;13H62^[[6;36H8^[[57;181H^[[1;176H5^[[4;13H66^[[5d^H7^[[5;36H0^[[6;14H9^[[6;28H1240   220^[[6;48HR^[[6;65H sh -c ps aux | grep -i png^[[57;181H^[[1;176H7^[[4;13H70^[[5d^H^H71^[    [5;36H24^[[6;13H73^[[6;28H2944   984^[[6;48HS^[[6;65H^[[15P^[[57;181H^[[1;176H9^[[4;14H4^[[5d^H5^[[5;34H3028^[[6;14H7^[[6;34H100^[[57;181H^[[1;175H41^[[4;14H8^[[5d^H9^[[5;34H298    0^[[6;13H81^[[6;36H8^[[57;181H^[[1;176H3^[[4;13H82^[[5d^H^H83^[[5;36H16^[[6;14H5^[[6;34H 932^[[57;181H^[[1;176H5^[[4;14H6^[[5d^H7^[[5;36H28^[[6;14H9^[[6;36H20^[[57;181H^[[1;176H    7^[[4;13H90^[[5d^H^H91^[[5;34H3032^[[6;13H93^[[6;34H1084^[[57;181H^[[1;176H9^[[4;12H339^[[5;12H340^[[5;36H5^[[6;12H342^[[6;34H 968^[[57;181H^[[1;175H51^[[4;13H45^[[5d^H6^[[5;34H    2908^[[6;14H8^[[6;36H36^[[57;181H^[[1;176H3^[[4;14H9^[[5d^H^H50^[[5;36H72^[[6;13H52^[[6;36H64^[[57;181H^[[1;176H5^[[4;13H53^[[5d^H4^[[5;36H08^[[6;14H6^[[6;34H1088^[[57;181H^[[1;    176H7^[[4;14H7^[[5d^H8^[[5;34H3032^[[6;13H60^[[6;34H 936^[[57;181H^[[1;176H9^[[4;13H63^[[5d^H^H64^[[5;34H2996^[[6;14H6^[[6;36H68^[[57;181H^[[1;173H2:01^[[4;14H7^[[4;57H2^[[5;14H    8^[[5;34H3052^[[5;57H2^[[6;13H70^[[6;28H1240   216^[[6;48HR^[[6;57H2^[[65G sh -c ps aux | grep -i png^[[57;181H^[[1;176H3^[[4;12H416^[[5;12H417^[[5;34H2924^[[6;12H419^[[6;28H294    4   928^[[6;48HS^[[6;65H^[[15P^[[57;181H^[[1;176H5^[[4;13H22^[[5d^H^H23^[[5;36H0^[[6;13H25^[[6;37H0^[[57;181H^[[1;176H7^[[4;14H6^[[5d^H7^[[5;36H96^[[6;14H9^[[6;36H4^[[57;181H^[[    1;176H9^[[4;13H30^[[5d^H^H31^[[5;36H24^[[6;13H33^[[6;36H56^[[57;181H^[[1;175H11^[[4;14H4^[[5d^H5^[[5;35H880^[[6;14H7^[[6;36H64^[[57;181H^[[1;176H3^[[4;14H8^[[5d^H9^[[5;34H300^[[    6;13H41^[[6;37H0^[[57;181H^[[1;176H5^[[4;13H42^[[5d^H^H43^[[5;34H298^[[6;14H5^[[6;36H76^[[57;181H^[[1;176H7^[[4;14H6^[[5d^H7^[[5;37H8^[[6;14H9^[[6;28H1240   21^[[6;48HR^[[6;65H     sh -c ps aux | grep -i png^[[57;181H^[[1;176H9^[[4;13H95^[[5d^H^H96^[[6d^H^H98^[[6;28H2944   984^[[6;48HS^[[6;65H^[[15P^[[57;181H^[[1;175H21^[[4;12H501^[[5;12H502^[[5;36H2^[[6;1    2H504^[[6;34H1012^[[57;181H^[[1;176H3^[[4;14H5^[[5d^H6^[[5;34H3052^[[6;14H8^[[6;36H88^[[57;181H^[[1;176H5^[[4;14H9^[[5d^H^H10^[[6d^H^H12^[[6;36H0^[[57;181H^[[1;176H7^[[4;13H13^[    [5d^H4^[[5;34H2908^[[6;14H6^[[6;34H 932^[[57;181H^[[1;176H9^[[4;13H20^[[5d^H^H21^[[5;34H3056^[[6;13H23^[[6;37H6^[[57;181H^[[1;175H31^[[4;14H4^[[5d^H5^[[5;34H2992^[[6;14H7^[[6;36    H64^[[57;181H^[[1;176H3^[[4;13H73^[[5d^H^H74^[[5;36H16^[[6;13H76^[[6;35H888^[[57;181H^[[1;176H5^[[4;14H9^[[5d^H^H80^[[5;34H3052^[[6;13H82^[[6;35H96^[[57;181H^[[1;176H7^[[4;13H83    ^[[5d^H4^[[5;34H2984^[[6;14H6^[[6;36H56^[[57;181H^[[1;176H9^[[4;14H7^[[5d^H8^[[5;34H3032^[[6;13H90^[[6;36H12^[[57;181H^[[1;175H41^[[4;13H91^[[5d^H^H92^[[5;34H2988^[[6;14H4^[[6;3

我想知道:

  • 作为非特权用户,我可以使用任何其他工具来实现我想要的吗?我只需要从操作系统得到一个二进制答案:进程是否运行?

  • 如何在这个充满十六进制字符的日志文件中搜索可执行文件名称?

ubuntu watch
  • 1 个回答
  • 421 Views
Martin Hope
BlackCrystal
Asked: 2019-03-03 22:26:59 +0800 CST

watch 几个命令的输出不清楚

  • 0

我正在我的服务器上恢复数据库备份,我需要观察df -h和恢复实用程序的输出db2pd -utilities。我试过这个:
watch -n 2 "db2pd -utilities && df -h
输出(总结):

    Every 2.0s: db2pd -utilities && df -h    

  Database Member 0 -- Active -- Up 0 days 23:11:19 

  Utilities:
  Address        ID         Type        State      Invoker    Priority   

  0x000000E0     1          RESTORE      0          0          0          


  Progress:
  Address            ID         PhaseNum   CompletedWork                
  0x00003088         1          1          1073745920 bytes                          
  Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda3              39G  824M   36G   3% /
 tmpfs                 253G   16K  253G   1% /dev/shm
 /dev/sda2             194M   36M  149M  20% /boot
 /dev/sda1             200M  264K  200M   1% /boot/efi
 /dev/sda4              20G  215M   19G   2% /home
 /dev/sda5              20G  1.4G   17G   8% /opt
 /dev/sda9             166G  6.6G  151G   5% /tempWork
 /dev/sda7             9.7G  152M  9.0G   2% /tmp
 /dev/sda6              20G  227M   19G   2% /var

实际上输出越来越长,我不得不删除一些部分,它们结合在一起变得难以阅读。我应该用什么在它们之间腾出空间?

watch whitespace
  • 1 个回答
  • 81 Views
Martin Hope
Izzo
Asked: 2018-11-06 08:17:36 +0800 CST

您可以强制 SSH“watch”命令附加输出而不是覆盖吗?

  • 1

我正在尝试通过腻子查看我的网络统计信息,并希望每隔一秒将统计信息写入日志文件。我已将 putty 配置为将他的 ssh 会话记录到日志文件中。但是,我正在努力发出一个腻子命令,该命令重复发出命令以提取统计信息。

我的第一种方法是使用“watch”命令。这可以很好地每秒执行命令,但是,每次更新时它都会覆盖终端输出,并且日志文件不会显示历史记录。

我的问题:如何配置 watch 命令以附加会话输出而不是重复覆盖行?

ssh watch
  • 2 个回答
  • 1193 Views
Martin Hope
Inva
Asked: 2018-09-14 11:49:43 +0800 CST

即使使用 --color 选项,watch(1) 也无法正确插入 tree(1) 颜色

  • 3

我正在使用简单的命令组合来“监视”我的文件系统更改:watch 和 tree。
除了我想要颜色却买不到。

这是我认为应该起作用的:watch --color 'tree -C'哪种起作用,因为它给了我一些颜色,但与tree -C它本身不同。

这是一些屏幕截图:
watch --color 'tree -C'输出,一些颜色应用了
watch 'tree -C'输出,表明 tree 确实发送了所有转义码
tree -C输出,预期结果

罪魁祸首也可能在我的环境变量中,但如果我watch 'echo $LS_COLORS',我的 conf 就在那里。

有任何想法吗?:)

colors watch
  • 1 个回答
  • 364 Views
Martin Hope
Konrad
Asked: 2018-08-16 08:33:46 +0800 CST

如果命令执行成功则中断监视

  • 4

如果命令执行成功,我希望能够中断手表。实际上,我正在寻找一种相反的行为,而不是通过--errexit. 按照男人的说法:

-e,--errexit 在命令错误时冻结更新,并在按键后退出。

例子

命令:

ping -c 3 www.google.com

由于不完整的连接而失败*。我可以通过以下方式重新运行以查看连接何时恢复:

watch -n 1 'ping -c 3 www.google.com'

ping如果执行没有错误,我想停止观看。


* 我不想找到更好的方法来验证连接性。这些ping例子来自在火车上使用手机连接时手机信号经常丢失。

bash watch
  • 1 个回答
  • 549 Views
Martin Hope
naglemi
Asked: 2018-07-30 23:41:31 +0800 CST

使用 watch 或替代方式一次查看多个命令

  • 6

在运行需要很长时间才能运行的数据繁重的脚本时,我喜欢使用这些命令来监控脚本的状态/进度。然后,我可以将不断更新的输出作为进度条打开。

watch qstat #see status of job in our SGE_Batch query system
watch ls -lhrt #show organized information for all files in working directory

我有时会在这些之间切换,例如,当输出文件的大小停止增长但我想确保我的脚本仍在运行时。

为避免切换或使用多个终端窗口,我如何使用 watch 或类似功能一次从两个函数(qstat 和 ls)获取不断更新的结果输出?

watch
  • 1 个回答
  • 8440 Views
Martin Hope
Daniel Marchand
Asked: 2018-07-07 05:40:55 +0800 CST

watch-command-alias-expansion 并且需要使用引号

  • 3

我的问题与此处的手表问题类似,但有所不同。我需要使用引号,这似乎被别名手表剥离了。

我想在自定义 slurm squeue 命令上运行 watch:

$alias squeue_personal='squeue -o "%.18i %.9P %.8j %.8u %.216t %.10M %.6D %R    %V   %S  %Z"'
$alias watch='watch '        

注意: 根据其他手表问题

但这仍然行不通。因为别名手表去掉了引号:

Every 2.0s: squeue -o %.18i %.9P %.8j %.8u %.2t %.10M %.6D %R    %V   %S  %Z                                                                                            Fri Jul  6 12:06:57 2018

squeue: error: Unrecognized option: %.9P
Usage: squeue [-A account] [--clusters names] [-i seconds] [--job jobid]
              [-n name] [-o format] [-p partitions] [--qos qos]
              [--reservation reservation] [--sort fields] [--start]
              [--step step_id] [-t states] [-u user_name] [--usage]
              [-L licenses] [-w nodes] [-ahjlrsv]

如果我不使用别名,一切都很好。例如以下作品:

$watch 'squeue  -o "%.18i %.9P %.8j %.8u %.2t %.10M %.6D %R    %V   %S  %Z"'

我确信解决方案是对另一个手表问题的一些小转折,但我不知道是什么。

slurm watch
  • 1 个回答
  • 1127 Views
Martin Hope
Stewart
Asked: 2018-05-17 23:03:32 +0800 CST

如何中断watch命令?

  • 1

我有一个将一些信息打印到标准输出的程序,我像这样运行它:

watch -n 0.1 myprogram

我的问题是我需要myprogram干净地退出,调用适当的析构函数来释放系统范围的互斥锁。如果我按CTRL+ C,则将watch被杀死并且myprogram没有机会干净地退出。

有没有办法watch干净地退出,以便在返回之前等待子进程完成?

该man页面简单地说:

手表会一直运行直到被打断

kill watch
  • 1 个回答
  • 4868 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve