Currently, when using pipe in command line, we cannot specify a script with shebang directly like this: crash> foreach bt | ./analyze.awk crash: pipe operation failed (or it looks like crash can loop until Ctrl-C depending on timing) This is a bit confusing and inconvenient because it's not shell-like behavior. The cause is that output_command_to_pids() searches /proc/PID/stat files for "(path/to/script)" string and cannot find such process, and also the ps kludge doesn't work well in this case. This patch removes the part except its file name like "(script)" so that it can find the process. Signed-off-by: Kazuhito Hagio <k-hagio@xxxxxxxxxxxxx> --- cmdline.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmdline.c b/cmdline.c index ee08f06..c0a9f4f 100644 --- a/cmdline.c +++ b/cmdline.c @@ -806,7 +806,7 @@ output_command_to_pids(void) char buf1[BUFSIZE]; char buf2[BUFSIZE]; char lookfor[BUFSIZE+2]; - char *pid, *name, *status, *p_pid, *pgrp; + char *pid, *name, *status, *p_pid, *pgrp, *comm; char *arglist[MAXARGS]; int argc; FILE *pipe; @@ -815,7 +815,8 @@ output_command_to_pids(void) retries = 0; shell_has_exited = FALSE; pc->pipe_pid = pc->pipe_shell_pid = 0; - sprintf(lookfor, "(%s)", pc->pipe_command); + comm = strrchr(pc->pipe_command, '/'); + sprintf(lookfor, "(%s)", comm ? ++comm : pc->pipe_command); stall(1000); retry: if (is_directory("/proc") && (dirp = opendir("/proc"))) { -- 1.8.3.1 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility