Portál AbcLinuxu, 29. prosince 2025 19:31
man fungovat, je problém ve vaší uživatelské konfiguraci (možná chybně nastavená proměnná PAGER); jinak by to asi chtělo použít strace, abyste zjistil, co se to vlastně pokouší spustit za potomka a proč umřel.
PID TTY STAT TIME COMMAND 6108 pts/2 Ss 0:00 /bin/bash 7731 pts/2 S+ 0:00 man mkdir 7732 pts/2 S+ 0:00 sh -c (echo '.ll 79n'; /usr/bin/zsoelim /usr/share/man/man1/mkdir.1) | /usr/bin/tbl | /usr/bin/nroff -mandocdb -rLL=79n -rLT=79n -Tutf8 | less 7736 pts/2 S+ 0:00 /bin/sh /usr/bin/nroff -mandocdb -rLL=79n -rLT=79n -Tutf8Zatím v tom chybu nevidím. Přesto mi man stále nefunguje.
Ještě jeden nápad: zkuste sem hodit výpis
for v in ${!LESS*}; do echo "$v='${!v}'"; done
(nejlépe jednou pod rootem, jednou pod normálním uživatelem).
> for v in ${!LESS*}; do echo "$v='${!v}'"; done
LESS='-M -I'
LESSCLOSE='lessclose.sh %s %s'
LESSKEY='/etc/lesskey.bin'
LESSOPEN='lessopen.sh %s'
LESS_ADVANCED_PREPROCESSOR='no'
> su
Heslo:
# for v in ${!LESS*}; do echo "$v='${!v}'"; done
LESS='-M -I'
LESSCLOSE='lessclose.sh %s %s'
LESSKEY='/etc/lesskey.bin'
LESSOPEN='lessopen.sh %s'
LESS_ADVANCED_PREPROCESSOR='no'
strace a podívat se, který program přesně tam havaruje a proč.
strace vyprodukuje asi 5000 řádků, zkusím sem poslat pár posledních:
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7d6fb48) = 6279
close(3) = 0
close(5) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
pipe([3, 5]) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7d6fb48) = 6280
close(4) = 0
close(5) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7d6fb48) = 6281
close(3) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
waitpid(-1, /usr/bin/nroff: line 203: Scenario: command not found
/usr/bin/nroff: line 204: Scenario: command not found
/usr/bin/nroff: line 205: Unimplemented: command not found
/usr/bin/nroff: line 206: Unimplemented: command not found
/usr/bin/nroff: line 207: Scenario: command not found
/usr/bin/nroff: line 208: Scenario: command not found
/usr/bin/nroff: line 209: Scenario: command not found
/usr/bin/nroff: line 210: 2: command not found
[{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 6281
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn() = ? (mask now [])
waitpid(-1, 0xbfbb2e98, WNOHANG) = 0
waitpid(-1, /usr/bin/nroff: line 217: echo: write error: P�eru�ena roura (SIGPIPE)
[{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 6280
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn() = ? (mask now [])
waitpid(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGPIPE}], WNOHANG) = 6278
waitpid(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGPIPE}], 0) = 6279
rt_sigaction(SIGINT, {SIG_DFL}, NULL, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL}, NULL, 8) = 0
chdir("/home/pospichal") = 0
ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
exit_group(0) = ?
Process 6277 detached
Tohle mi připadá, jako byste měl /usr/bin/nroff (což je skript, který emuluje tradiční nroff pomocí groff) přepsaný nějakými nesmysly. V openSuSE 10.2 by měl mít MD5 kontrolní součet
15c08b049d17656b083cbe4dee2e0589 /usr/bin/nroff
/usr/bin/nroff na tom systému, ze kterého pochází ten výpis strace.
while true ; do
case "$1" in
--)
if [ -n "$2" ] ; then
INPUTFILE="$2"
shift 2
else
INPUTFILE=""
shift 1
fi
break
;;
*)
OLDARGS="$OLDARGS $1"
echo $1
shift 1
;;
esac
done
Ovšem MD5 jsme si před chvílí odsouhlasili a obsah $1 už tady taky proběhl. Vše vypadá normálně - až na to, že to nefunguje.
while true ; do jsem prozatím vložil while false ; do. O 2 řádky výš je totiž chybný příkaz
TEMP=$(getopt --options "abcCd:eEf:F:gGhiI:lL:m:M:n:No:pP:r:RsStT:UvVw:W:XzZ" --longoptions help,version -- ${1+"$@"})
jehož výsledkem v TEMP je řetězec "Unimplemented option chosen.". Nevím, co je na tom příkazu špatně, protože parametry odpovídají popisu v manuálu. Od této chvíle mi už man chodí alespoň v nějakém degradovaném režimu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.