From nobody Sun Jan 19 19:31:47 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Ybk9v6cDfz5lcjw; Sun, 19 Jan 2025 19:31:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Ybk9v5TTKz40Xy; Sun, 19 Jan 2025 19:31:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737315107; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=orbfZUCUSuFLDjWfA4b6LJOlq2YuUNdiaEKQaRTFxMw=; b=OGwT/HWidIrK1eIM0qpXARtsjtyt1pCctwq4fOxEY+T9KnDD6RrYqnE05uewUg4BetRht+ TXG+Ke5J+xk7Unv8CVR3NKV3uSM2es+Waco7VJW/85HpDdWpCooI+Eclhj44nG3aMrRscf IPiK8vRQ2RR+QzjfGTl3l1lBxxGNegNy98gPtCeJjKeja36TS2ubbyzPPVQPI2OoOcfLO8 nVy74yYw8inDbq5ZoCAsnqjvmaNoTby3rBl5DnRxO0LA7TeYAgP7+HbAD/eYPVNxM+qa7+ 0c1CCpWff97wj01S8Lnb5fUDRf0QdVw9LWz+OQA3+CSxAkdNEZ6y8T7ySX8NgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737315107; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=orbfZUCUSuFLDjWfA4b6LJOlq2YuUNdiaEKQaRTFxMw=; b=Bu0+2Sn66Cm766iVA01mSVEFQ+t3TeGkcsZVx/00KQcCVBJXh18YPKm6SBB0Xi4P25kMi1 9FHFV4eH+XDPE5wum/R6husUzf71i33Qq/TVojIfSzoRDxk6Y634stKy9s1+TjB0uqleXV tE2Z21M0218mPtvRlPPs9aS0iconPDq/ee2gKIYK5J16fUqMLKbqTiEoOZxsmFG/2dVAbe K61br1U6oDxuDI5EsQcuAv5uB6V5iq42UJlvCes+T19zyMYvW6x/Duq/LFHJVgLKV1pL0x b3+v/P1iXJQriSiVw+RBEaaCpDu7PJfm+VgC1a3XiK3KY2otbgcAJ1TPijUX8Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1737315107; a=rsa-sha256; cv=none; b=yi1eyatdtnd1y6hFNJuSnLzlBWnESV5JMi+rEd1+vcDzeTHONolqNVAxe8OiVWFyxVX+r0 7jw0RqZg0DNCpcgWKwYzTijetEwHYq1U+PL0AbxyIW/6stsI8F/ufqpzuv0cxnpv3kZa11 ahLLOpa6akeRlY4TobzpPquRbnDSFPa1qmt9G1UMNjsbSvD/6rRbQhgU0Mb96ohNlwo34S 5LrVhz9uIv9XVha0ZvYMufzTSDdNWzMqX/f85HeorxoQlnwn0523LBYZsVzEaS1GaI460h /ntALv6IsTldWGy5rC26uJQWhapY+K5GNXr3WJiA6m3dVCIXb+DAxj7l/BanrA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Ybk9v52Xsz13Lq; Sun, 19 Jan 2025 19:31:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50JJVlp9075564; Sun, 19 Jan 2025 19:31:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50JJVled075561; Sun, 19 Jan 2025 19:31:47 GMT (envelope-from git) Date: Sun, 19 Jan 2025 19:31:47 GMT Message-Id: <202501191931.50JJVled075561@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: f31dbc1c2dc5 - stable/14 - timeout(1): Add -v/--verbose option to show diagnosis info List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f31dbc1c2dc54d1006186bca137b1c4ed2169f91 Auto-Submitted: auto-generated The branch stable/14 has been updated by gbe: URL: https://cgit.FreeBSD.org/src/commit/?id=f31dbc1c2dc54d1006186bca137b1c4ed2169f91 commit f31dbc1c2dc54d1006186bca137b1c4ed2169f91 Author: Gordon Bergling AuthorDate: 2025-01-04 08:52:56 +0000 Commit: Gordon Bergling CommitDate: 2025-01-19 19:30:13 +0000 timeout(1): Add -v/--verbose option to show diagnosis info The -v/--verbose option enables this utility to show diagnosis info to stderr about any signal sent on timeout. This implementation refers to GNU coreutils's timeout(1). Reviewed by: bapt, Alexander Ziaee (manpages) Approved by: bapt (src) Obtained from: DragonFlyBSD Differential Revision: https://reviews.freebsd.org/D48225 (cherry picked from commit d633a7d12105a54551622882f4eee80a13a1445a) --- bin/timeout/timeout.1 | 6 ++++-- bin/timeout/timeout.c | 28 +++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/bin/timeout/timeout.1 b/bin/timeout/timeout.1 index b8ec3030b271..1a5fd95a6256 100644 --- a/bin/timeout/timeout.1 +++ b/bin/timeout/timeout.1 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd December 28, 2024 +.Dd January 4, 2025 .Dt TIMEOUT 1 .Os .Sh NAME @@ -34,7 +34,7 @@ .Nm .Op Fl k Ar time | Fl -kill-after Ar time .Op Fl s Ar sig | Fl -signal Ar sig -.Op Fl -kill-after Ar time | Fl k Ar time +.Op Fl v | Fl -verbose .Op Fl -foreground .Op Fl -preserve-status .Ar duration @@ -76,6 +76,8 @@ Specify the signal to send on timeout. By default, .Dv SIGTERM is sent. +.It Fl v , Fl -verbose +Show information to stderr about any signal sent on timeout. .It Fl -foreground Do not propagate timeout to the children of .Ar command . diff --git a/bin/timeout/timeout.c b/bin/timeout/timeout.c index 3803aeeca883..68abb28e2c50 100644 --- a/bin/timeout/timeout.c +++ b/bin/timeout/timeout.c @@ -49,14 +49,17 @@ static sig_atomic_t sig_chld = 0; static sig_atomic_t sig_term = 0; static sig_atomic_t sig_alrm = 0; static sig_atomic_t sig_ign = 0; +static const char *command = NULL; +static bool verbose = false; static void usage(void) { fprintf(stderr, "Usage: %s [-k time | --kill-after time]" - " [-s sig | --signal sig] [--foreground] [--preserve-status]" - " \n", getprogname()); + " [-s sig | --signal sig] [-v | --verbose] [--foreground]" + " [--preserve-status] \n", + getprogname()); exit(EXIT_FAILURE); } @@ -146,6 +149,16 @@ sig_handler(int signo) } } +static void +send_sig(pid_t pid, int signo) +{ + if (verbose) { + warnx("sending signal %s(%d) to command '%s'", + sys_signame[signo], signo, command); + } + kill(pid, signo); +} + static void set_interval(double iv) { @@ -196,10 +209,11 @@ main(int argc, char **argv) { "kill-after", required_argument, NULL, 'k'}, { "signal", required_argument, NULL, 's'}, { "help", no_argument, NULL, 'h'}, + { "verbose", no_argument, NULL, 'v'}, { NULL, 0, NULL, 0 } }; - while ((ch = getopt_long(argc, argv, "+k:s:h", longopts, NULL)) != -1) { + while ((ch = getopt_long(argc, argv, "+k:s:vh", longopts, NULL)) != -1) { switch (ch) { case 'k': do_second_kill = true; @@ -208,6 +222,9 @@ main(int argc, char **argv) case 's': killsig = parse_signal(optarg); break; + case 'v': + verbose = true; + break; case 0: break; case 'h': @@ -226,6 +243,7 @@ main(int argc, char **argv) first_kill = parse_duration(argv[0]); argc--; argv++; + command = argv[0]; if (!foreground) { /* Acquire a reaper */ @@ -316,7 +334,7 @@ main(int argc, char **argv) procctl(P_PID, getpid(), PROC_REAP_KILL, &killemall); } else - kill(pid, killsig); + send_sig(pid, killsig); if (do_second_kill) { set_interval(second_kill); @@ -333,7 +351,7 @@ main(int argc, char **argv) procctl(P_PID, getpid(), PROC_REAP_KILL, &killemall); } else - kill(pid, sig_term); + send_sig(pid, sig_term); if (do_second_kill) { set_interval(second_kill);