----- Original Message ----- > > > ----- Original Message ----- > > > > On 9/27/2018 1:42 PM, Dave Anderson wrote: > > > > > > > > > ----- Original Message ----- > > >> 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. > > > > > > Just to clarify, is this is due to using "./analyze.awk" (with the preceding "./"), > > > whereas if you were to use "analyze.awk", it would work OK? > > > > No, it doesn't because "sh -c analyze.awk" does not work. > > This behavior will not change with this patch, and I think > > it should not change. > > > > [before] > > crash> bt | awk -f analyze.awk > > analyzed > > crash> bt | ./analyze.awk > > crash: pipe operation failed > > crash> bt | analyze.awk > > sh: analyze.awk: command not found > > crash: pipe operation failed > > > > [after] > > crash> bt | awk -f analyze.awk > > analyzed > > crash> bt | ./analyze.awk > > analyzed > > crash> bt | analyze.awk > > sh: analyze.awk: command not found > > crash: pipe operation failed > > > > Thanks, > > Kazu > > OK, it appears that if the output script (with #!) is specified beginning > with either "./" or "/" it would fail. (and works OK with the patch) Kazu, Your patch is queued for crash-7.2.5: https://github.com/crash-utility/crash/commit/ac8738376facd2d6de91ed62d29b6b654468ecf1 Thanks, Dave > > >> > > >> 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 > > >> > > > > > > -- > > > Crash-utility mailing list > > > Crash-utility@xxxxxxxxxx > > > https://www.redhat.com/mailman/listinfo/crash-utility > > > > > > > -- > > Crash-utility mailing list > > Crash-utility@xxxxxxxxxx > > https://www.redhat.com/mailman/listinfo/crash-utility > > > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility