FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章与书籍
  • UNIX 四分之一世纪
  • Unix 痛恨者手册
  • man
  • man1
    • Mail.1
    • addr2line.1
    • alias.1
    • alloc.1
    • apply.1
    • apropos.1
    • ar.1
    • at.1
    • atq.1
    • atrm.1
    • awk.1
    • basename.1
    • batch.1
    • bc.1
    • bg.1
    • bind.1
    • bindkey.1
    • break.1
    • breaksw.1
    • bsdcat.1
    • bsdtar.1
    • btsockstat.1
    • builtin.1
    • builtins.1
    • c++.1
    • case.1
    • cat.1
    • cc.1
    • chdir.1
    • chfn.1
    • chgrp.1
    • chkey.1
    • chmod.1
    • cksum.1
    • clang++.1
    • clang-cpp.1
    • cmp.1
    • colrm.1
    • column.1
    • comm.1
    • command.1
    • complete.1
    • continue.1
    • cp.1
    • cpp.1
    • crypt.1
    • csh.1
    • ctfdump.1
    • cut.1
    • date.1
    • dd.1
    • default.1
    • df.1
    • dialog.1
    • diff.1
    • diff3.1
    • dirname.1
    • dirs.1
    • do.1
    • done.1
    • dtrace.1
    • du.1
    • echo.1
    • echotc.1
    • edit.1
    • ee.1
    • egrep.1
    • elfdump.1
    • elif.1
    • else.1
    • end.1
    • endif.1
    • endsw.1
    • enigma.1
    • env.1
    • esac.1
    • eval.1
    • exec.1
    • exit.1
    • export.1
    • fc.1
    • fg.1
    • fgrep.1
    • fi.1
    • filetest.1
    • find.1
    • for.1
    • foreach.1
    • fsync.1
    • ftp.1
    • fuser.1
    • gate-ftp.1
    • getopts.1
    • glob.1
    • goto.1
    • grep.1
    • groups.1
    • gunzip.1
    • gzcat.1
    • gzip.1
    • hash.1
    • hashstat.1
    • head.1
    • history.1
    • host.1
    • hostname.1
    • hup.1
    • ibv_asyncwatch.1
    • ibv_devices.1
    • ibv_devinfo.1
    • ibv_ud_pingpong.1
    • id.1
    • ident.1
    • if.1
    • intro.1
    • introduction.1
    • jobid.1
    • jobs.1
    • kdump.1
    • kenv.1
    • keylogin.1
    • keylogout.1
    • kill.1
    • killall.1
    • ktrace.1
    • last.1
    • lastcomm.1
    • ld.1
    • ld.lld.1
    • ldd.1
    • ldd32.1
    • less.1
    • lessecho.1
    • limit.1
    • limits.1
    • link.1
    • llvm-addr2line.1
    • llvm-ranlib.1
    • ln.1
    • locate.1
    • lockstat.1
    • log.1
    • logger.1
    • login.1
    • logname.1
    • logout.1
    • look.1
    • lorder.1
    • ls-F.1
    • ls.1
    • lsvfs.1
    • lzcat.1
    • lzma.1
    • lzmadec.1
    • lzmainfo.1
    • mailx.1
    • make.1
    • man.1
    • mandoc.1
    • manpath.1
    • md5.1
    • mdocml.1
    • mkdir.1
    • mkfilters.1
    • more.1
    • mv.1
    • nawk.1
    • nc.1
    • netstat.1
    • newaliases.1
    • nice.1
    • notify.1
    • onintr.1
    • pagesize.1
    • passwd.1
    • paste.1
    • pax.1
    • perror.1
    • pftp.1
    • popd.1
    • printenv.1
    • ps.1
    • pushd.1
    • pwd.1
    • qemu.1
    • ranlib.1
    • read.1
    • readelf.1
    • readlink.1
    • readonly.1
    • realpath.1
    • ree.1
    • rehash.1
    • repeat.1
    • rev.1
    • revoke.1
    • rgrep.1
    • rm.1
    • rmd16.1
    • rmdir.1
    • rping.1
    • ruptime.1
    • rwho.1
    • sched.1
    • scp.1
    • sdiff.1
    • sed.1
    • seq.1
    • set.1
    • setenv.1
    • settc.1
    • setty.1
    • setvar.1
    • sftp.1
    • sh.1
    • sha1.1
    • sha224.1
    • sha256.1
    • sha384.1
    • sha512.1
    • sha512t256.1
    • shift.1
    • skein1024.1
    • skein256.1
    • skein512.1
    • slogin.1
    • sockstat.1
    • sort.1
    • source.1
    • split.1
    • ssh-copy-id.1
    • ssh-keygen.1
    • ssh.1
    • stat.1
    • stop.1
    • su.1
    • suspend.1
    • svnlite.1
    • switch.1
    • systat.1
    • tail.1
    • tar.1
    • tcpdump.1
    • tcsh.1
    • telltc.1
    • telnet.1
    • then.1
    • time.1
    • timeout.1
    • times.1
    • top.1
    • touch.1
    • trap.1
    • truncate.1
    • truss.1
    • type.1
    • ulimit.1
    • umask.1
    • unalias.1
    • uname.1
    • uncomplete.1
    • unhash.1
    • uniq.1
    • unlimit.1
    • unlink.1
    • unlzma.1
    • unset.1
    • unsetenv.1
    • until.1
    • unxz.1
    • uptime.1
    • users.1
    • uuidgen.1
    • view.1
    • w.1
    • wait.1
    • wall.1
    • wc.1
    • whatis.1
    • where.1
    • whereis.1
    • which.1
    • while.1
    • who.1
    • whoami.1
    • xargs.1
    • xz.1
    • xzcat.1
    • xzdec.1
    • xzdiff.1
    • yes.1
    • yppasswd.1
    • zcat.1
    • zcmp.1
    • zdiff.1
    • zforce.1
    • zless.1
    • zmore.1
    • znew.1
  • man4
    • ow.4
    • ow_temp.4
    • owc.4
  • man5
    • device.hints.5
  • man7
    • hire
  • man8
    • adduser.8
    • authpf-noip.8
    • authpf.8
    • autounmountd.8
    • beastie.4th.8
    • bhyve.8
    • bhyvectl.8
    • bhyveload.8
    • blacklistctl.8
    • boot.8
    • boot0cfg.8
    • boot_i386.8
    • bsdconfig.8
    • camcontrol.8
    • check-password.4th.8
    • chown.8
    • chroot.8
    • config.8
    • crash.8
    • crashinfo.8
    • devctl.8
    • devinfo.8
    • devmatch.8
    • diskinfo.8
    • dmesg.8
    • fastboot.8
    • fasthalt.8
    • freebsd-update.8
    • fstyp.8
    • ftp-proxy.8
    • ftpd.8
    • gpart.8
    • gpioctl.8
    • gptboot.8
    • gptzfsboot.8
    • growfs.8
    • halt.8
    • i2c.8
    • ifconfig.8
    • inetd.8
    • init.8
    • intro.8
    • iostat.8
    • ipfw.8
    • jail.8
    • jexec.8
    • jls.8
    • kldconfig.8
    • kldload.8
    • kldstat.8
    • kldunload.8
    • kldxref.8
    • lastlogin.8
    • loader.4th.8
    • loader.8
    • loader.efi.8
    • mail.local.8
    • mailstats.8
    • menu.4th.8
    • mount.8
    • mount_cd9660.8
    • mount_msdosfs.8
    • moused.8
    • mtree.8
    • natd.8
    • nmtree.8
    • ntptime.8
    • password.lua.8
    • periodic.8
    • ping.8
    • pkg.8
    • pmccontrol.8
    • pmcstat.8
    • powerd.8
    • poweroff.8
    • pw.8
    • pwm.8
    • quot.8
    • rarpd.8
    • rc.8
    • rc.d.8
    • rc.firewall.8
    • rc.local.8
    • rc.network.8
    • rc.pccard.8
    • rc.resume.8
    • rc.serial.8
    • rc.shutdown.8
    • rc.subr.8
    • rcorder.8
    • reboot.8
    • renice.8
    • rescue.8
    • rmuser.8
    • route.8
    • route6d.8
    • routed.8
    • rpc.rusersd.8
    • service.8
    • shutdown.8
    • spi.8
    • ssh-keysign.8
    • sysctl.8
    • sysrc.8
    • tcpdrop.8
    • tftpd.8
    • tzsetup.8
    • umount.8
    • vmstat.8
    • watchdog.8
    • watchdogd.8
    • zfs.8
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 名称
  • 概要
  • 描述
  • 超时操作
  • 文件
  • 实例
  • 调试 watchdogd 和/或你的 watchdog 脚本。
  • 示例的生产使用
  • 参见
  • 历史
  • 作者
在GitHub上编辑
导出为 PDF
  1. man8

watchdogd.8

WATCHDOGD(8)

WATCHDOGD(8)

FreeBSD System Manager's Manual

WATCHDOGD(8)

名称

watchdogd —

看门狗守护进程

概要

watchdogd [-dnSw] [--debug] [--softtimeout] [--softtimeout-action action] [--pretimeout timeout] [--pretimeout-action action] [-e cmd] [-I file] [-s sleep] [-t timeout] [-T script_timeout] [-x exit_timeout]

描述

watchdogd 实用程序与内核的看门狗设施接口,以确保系统处于工作状态。 如果 watchdogd 在特定超时后无法与内核交互,内核将采取措施帮助调试或重新启动计算机。

如果指定了 -e cmd , watchdogd 将尝试使用 system(3) 执行此命令,并且只有当命令返回零退出代码时才会重置 watchdog。 如果未指定 -e cmd ,则守护程序将改为执行简单的文件系统检查。

-n 参数 'dry-run' 将导致看门狗不武装系统看门狗,而只运行看门狗功能并报告故障。 这对于开发新的 watchdogd 脚本很有用,因为如果脚本出现问题,系统将不会重新启动。

-s sleep 参数可用于控制每次执行检查之间的睡眠时间,默认为 10 秒。

-t timeout 以秒为单位指定所需的超时时间。 默认超时为 128 秒。

导致看门狗超时的一种可能情况是中断风暴。 如果发生这种情况, watchdogd 将不再执行,因此内核的看门狗例程将在可配置的超时后采取行动。

-T script_timeout 指定看门狗将抱怨其脚本运行时间过长的阈值(以秒为单位)。 如果未设置 script_timeout 默认为 -s sleep 选项指定的值。

-x exit_timeout 参数是程序退出时保持有效的超时时间(以秒为单位)。 如果在给定的超时到期之前软件重新启动未完成,则将 -x 与非零值一起使用可通过触发硬件重置来防止重新启动期间锁定。

在收到 SIGTERM 和 SIGINT 信号后, watchdogd 将在首先指示内核禁用超时或将其重置为 -x exit_timeout 给出的值之后终止。

watchdogd 实用程序可识别以下运行时选项:

-I file

在指定文件中写入 watchdogd 实用程序的进程 ID。

-d --debug

不要分叉。 指定此选项后, watchdogd 将不会在启动时分叉到后台。

-S

当看门狗命令的执行时间比预期的要长时,不要向系统记录器发送消息。 默认行为是使用 LOG_DAEMON 工具通过系统记录器记录警告,并将警告输出到标准错误。

-w

当看门狗脚本花费太长时间时抱怨。 当执行 watchdog 脚本的时间超过 'sleep' 选项的阈值时,此标志将导致 watchdogd 抱怨。

--pretimeout timeout

设置 "pretimeout" 设置“pretimeout”看门狗。 在看门狗将触发尝试动作之前的 "timeout" 秒。 该操作由 --pretimeout-action 标志设置。 默认只是通过 log(9) 记录消息 (WD_SOFT_LOG)。

--pretimeout-action action

设置 pretimeout 的超时操作。 请参阅 超时操作 部分。

--softtimeout

而不是武装各种硬件看门狗,只使用一个基本的软件看门狗。 默认操作只是 log(9) 一条消息 (WD_SOFT_LOG)。

--softtimeout-action action

设置 softtimeout 的超时操作。 请参阅 超时操作 部分。

超时操作

通过 --pretimeout-action 和 --softtimeout-action 标志可以使用以下超时操作:

panic

达到超时时调用 panic(9) 。

ddb

达到超时时,通过 kdb_enter(9) 进入内核调试器。

log

达到超时时使用 log(9) 记录消息。

printf

调用内核 printf(9) 向控制台和 dmesg(8) 缓冲区显示一条消息。

可以将操作组合在一个逗号分隔的列表中,如下所示: log,printf 将同时将 printf(9) 和 log(9) 发送到 dmesg(8) 和 syslogd(8) 的内核 log(4) 设备。

文件

/var/run/watchdogd.pid

实例

调试 watchdogd 和/或你的 watchdog 脚本。

这是调试 watchdogd 和看门狗脚本的有用方法。

(注意 ^C 的工作很奇怪,因为 watchdogd 调用 system(3) 所以第一个 ^C 将终止 "sleep" 命令。)

使用的选项说明:

  1. 设置调试 (--debug)

  2. 将看门狗设置为在 30 秒时跳闸。 (-t 30)

  3. 使用软超时

    1. 使用软超时(不要武装硬件看门狗) (--softtimeout)

    2. 设置 softtimeout 操作以在它跳闸时同时执行内核 printf(9) 和 log(9) 。 (--softtimeout-action log,printf)

  4. 使用预超时:

    1. 设置 15 秒的预超时(这将在稍后触发恐慌/转储)。 (--pretimeout 15)

    2. 跳闸时将操作设置为内核 printf(9) 和 log(9) 。 (--pretimeout-action log,printf)

  5. 脚本的使用:

    1. 作为看门狗的 shell 命令运行 "sleep 60" (-e 'sleep 60')

    2. 当脚本运行时间超过 1 秒时警告我们 (-w)

watchdogd --debug -t 30 \ --softtimeout --softtimeout-action log,printf \ --pretimeout 15 --pretimeout-action log,printf \ -e 'sleep 60' -w

示例的生产使用

  1. 将硬超时设置为 120 秒 (-t 120)

  2. 将恐慌设置为在 60 秒发生(触发 crash(8) 以进行转储分析):

    1. 使用预超时 (--pretimeout 60)

    2. 指定超时前操作 (--pretimeout-action log,printf,panic )

  3. 脚本的使用:

    1. 运行你的脚本 (-e '/path/to/your/script 60')

    2. 记录您的脚本运行时间是否超过 15 秒。 (-w -T 15)

watchdogd -t 120 \ --pretimeout 60 --pretimeout-action log,printf,panic \ -e '/path/to/your/script 60' -w -T 15

参见

watchdog(4), watchdog(8), watchdog(9)

历史

watchdogd 实用程序出现在 FreeBSD 5.1 中。

作者

watchdogd 实用程序和手册页由 Sean Kelly <smkelly@FreeBSD.org> 和 Poul-Henning Kamp <phk@FreeBSD.org> 编写。

Jeff Roberson <jeff@FreeBSD.org> 做出的一些贡献。

Alfred Perlstein <alfred@freebsd.org> 添加了 pretimeout 和 softtimeout 操作系统。

May 11, 2015

FreeBSD 13.1-RELEASE

上一页watchdog.8下一页zfs.8

最后更新于1年前