Как трассировать sh скрипты?
KibkaloIg: Как трассировать sh скрипты?
Что, народ, ни кто не знает?????????
bash -x
Мне нужно startkde отрассировать
надо bash -x startkde ?
А как значение переменных просматривать??
А нафига все это?
startkde у меня вываливается.
там есть тестовая запись в файл и одно сообщение об ошибке (которое выводится) в 3 местах прописана хочу знать в каком месте выпадает.
Конечно можно все вырезать и поодному тесту оставлять и так ловить поганую ошибку.
Но в качестве освоения Linuxa надо знать как скрипты пошагово прогонять и при этом смотреть переменные.
Ну не ужели ни кто не умеет этого делать на всём Северном Кавказе? Я молодой в Linuxe, и вы все что-ли молодые?
Ну и уроды мы, и как только ракеты в космос запускаем, просто не знаю!!!!
Что в логах? Что на консоли?
Логи, чистые так как скрипт заканчивается штатно, у него там есть внтутренняя проверка. Он пытается из переменной сбросить текст в файл в домашний каталог. Если не получается тогда пишет в переводе с аглицкого " Вы не имеете разрешения записи в католог /Home/Имярек" эта проверка три раза проходит так, что я думаю в логах ни чего крименального нет. Хотя какой лог смотреть на startkde ?
Не знаю откуда у него запрет для записи появился, в один прекрасный день стала эта херня появлятся. я разрешений ни каких не убирал!!!!!
А каталог есть?
<span class='smallblacktext'>[ Редактирование Wed May 18 2005, 09:51AM ]</span>
Ну извени брат Dumus
Что бы не быть многословным вот он злосчастный startkde
Смотри я то злосчастное место плюсиками выделил
Я смотрел, файл создается, размер 0
но судя по тексту туда чтото из переменной должно записаться
Допуски на запись стоят !dodge
#!/bin/sh
#
# DEFAULT KDE STARTUP SCRIPT ( KDE-3.1.4 )
# Modified for ASPLinux
#
unset BLOCK_SIZE # breaks parsing of df output
shopt -u -o noclobber # allow overwriting of files with '>'
# set up user environment if not present
# check for space on /tmp and "$HOME" and for write access
# error exit, if not
space_tmp=`df /tmp | xargs | cut -d" " -f11`
space_home=`df "$HOME" | xargs | cut -d" " -f11`
if [ $space_tmp -lt 50 ]; then
echo $"Not enough free disk space on /tmp"
exit 1
fi
if [ $space_home -lt 25 ]; then
echo $"Not enough free disk space on "$HOME""
exit 1
fi
testfile_tmp=`mktemp /tmp/KDE.startkde.XXXXXX`
testfile_home=`mktemp "$HOME"/KDE.startkde.XXXXXX`
if ! echo TEST_TEXT >$testfile_tmp 2>/dev/null ; then
echo $"You don't have write permissions for /tmp"
exit 1
fi
rm -f $testfile_tmp
++++++++++++++++++++++++++++++++++++++++
ВОТ оно это место
if ! echo TEST_TEXT >$testfile_home 2>/dev/null ; then
echo $"You don't have write permissions for "$HOME""
exit 1
fi
+++++++++++++++++++++++++++++++++++++++++
rm -f $testfile_home
[ -d "$HOME"/.kde/share/config ] || mkdir -p "$HOME"/.kde/share/config
# create necessary directories/files
if [ -x /usr/bin/desktop-create-kmenu ] ; then
/usr/bin/desktop-create-kmenu >&/dev/null
fi
if [ ! -d "$HOME"/.kde -a -d /etc/skel/.kde ]; then
( cd /etc/skel && tar cpf - .kde ) | ( cd "$HOME" && tar xpf - )
fi
if [ ! -e "$HOME"/.kde/share/config/emaildefaults ]; then
/usr/bin/mailsettings >"$HOME"/.kde/share/config/emaildefaults
fi
if [ ! -e "$HOME"/.kde/share/config/kmailrc ]; then
cat >"$HOME"/.kde/share/config/kmailrc <<EOF
[General]
transports=1
[Transport 1]
host=/usr/sbin/sendmail
name=Sendmail
type=sendmail
EOF
fi
if [ ! -e "$HOME"/.kde/share/config/kcmlaptoprc -a -e /proc/apm ]; then
# Try to figure out if we're on a laptop
if ! grep -q "?" /proc/apm ; then
# We appear to be on a laptop with battery status notification
cat >"$HOME"/.kde/share/config/kcmlaptoprc <<EOF
[BatteryDefault]
Enable=true
EOF
fi
fi
# When the X server dies we get a HUP signal from xinit. We must ignore it
# because we still need to do some cleanup.
trap 'echo GOT SIGHUP' HUP
# Boot sequence:
#
# kdeinit is used to fork off processes which improves memory usage
# and startup time.
#
# * kdeinit starts the dcopserver and klauncher first.
# * Then kded is started. kded is responsible for keeping the sycoca
# database up to date. When an up to date database is present it goes
# into the background and the startup continues.
# * Then kdeinit starts kcminit. kcminit performs initialisation of
# certain devices according to the user's settings
#
# * Then ksmserver is started which in turn starts
# 1) the window manager (kwin)
# 2) everything in $KDEDIR/share/autostart (kdesktop, kicker, etc.)
# 3) the rest of the session.
# The user's personal KDE directory is usually ~/.kde, but this setting
# may be overridden by setting KDEHOME.
kdehome=$HOME/.kde
test -n "$KDEHOME" && kdehome=`echo "$KDEHOME"|sed "s,^\~/,$HOME/,"`
# Activate the kde font directories.
#
# There are 4 directories that may be used for supplying fonts for KDE.
#
# There are two system directories. These belong to the administrator.
# There are two user directories, where the user may add her own fonts.
#
# The 'override' versions are for fonts that should come first in the list,
# i.e. if you have a font in your 'override' directory, it will be used in
# preference to any other.
#
# The preference order looks like this:
# user override, system override, X, user, system
#
# Where X is the original font database that was set up before this script
# runs.
usr_odir=$HOME/.fonts/kde-override
usr_fdir=$HOME/.fonts
if test -n "$KDEDIRS"; then
kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'`
sys_odir=$kdedirs_first/share/fonts/override
sys_fdir=$kdedirs_first/share/fonts
else
sys_odir=$KDEDIR/share/fonts/override
sys_fdir=$KDEDIR/share/fonts
fi
# We run mkfontdir on the user's font dirs (if we have permission) to pick
# up any new fonts they may have installed. If mkfontdir fails, we still
# add the user's dirs to the font path, as they might simply have been made
# read-only by the administrator, for whatever reason.
test -d "$sys_odir" && xset +fp "$sys_odir"
test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir")
test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir")
test -d "$sys_fdir" && xset fp+ "$sys_fdir"
#
# Add any user-installed font directories to the X font path
kde_fontsdir=$kdehome/share/fonts
kde_fontpaths=$kde_fontsdir/fontpaths
if test -r "$kde_fontpaths" ; then
savifs=$IFS
IFS=
for fpath in `grep -v '^[ ]*#' < "$kde_fontpaths"` ; do
if test -s "$fpath"/fonts.dir ; then
xset fp+ "$fpath"
fi
done
IFS=$savifs
fi
# Ask X11 to rebuild its font list.
xset fp rehash
# if the user has overwritten fonts, the cursor font may be different now
# so don't move this up
# Set a left cursor instead of the standard X11 "X" cursor, since I've heard
# from some users that they're confused and don't know what to do. This is
# especially necessary on slow machines, where starting KDE takes one or two
# minutes until anything appears on the screen.
#
# Set the background to the Red Hat default blue
# The standard X background is nasty, causing moire effects and exploding
# people's heads. We use colours from the standard KDE palette for those with
# palettised displays.
test "$XDM_MANAGED" || bkg="-solid #5477A0"
xsetroot -cursor_name left_ptr $bkg
test -f /etc/X11/Xresources && xrdb -merge /etc/X11/Xresources
#
# Get Ghostscript to look into user's KDE fonts dir for additional Fontmap
if test -n "$GS_LIB" ; then
GS_LIB=$kde_fontsdir:$GS_LIB
export GS_LIB
else
GS_LIB=$kde_fontsdir
export GS_LIB
fi
# Link "tmp" resource to directory in /tmp
# Creates a directory /tmp/kde-$USER and links $KDEHOME/tmp-$HOSTNAME to it.
lnusertemp tmp >/dev/null
# Link "socket" resource to directory in /tmp
# Creates a directory /tmp/ksocket-$USER and links $KDEHOME/socket-$HOSTNAME to it.
lnusertemp socket >/dev/null
# In case of dcop sockets left by a previous session, cleanup
dcopserver_shutdown
echo 'startkde: Starting up...' 1>&2
# the splashscreen and progress indicator
ksplash
# We set LD_BIND_NOW to increase the efficiency of kdeinit.
# kdeinit unsets this variable before loading applications.
LD_BIND_NOW=true kdeinit +kcminit +knotify
if test $? -ne 0; then
# Startup error
echo 'startkde: Could not start kdeinit. Check your installation.' 1>&2
xmessage -geometry 500x100 "Could not start kdeinit. Check your installation."
fi
# finally, give the session control to the session manager
# if the KDEWM environment variable has been set, then it will be used as KDE's
# window manager instead of kwin.
# if KDEWM is not set, ksmserver will ensure kwin is started.
# kwrapper is used to reduce startup time and memory usage
# kwrapper does not return usefull error codes such as the exit code of ksmserver.
# We only check for 255 which means that the ksmserver process could not be
# started, any problems thereafter, e.g. ksmserver failing to initialize,
# will remain undetected.
test -n "$KDEWM" && KDEWM="--windowmanager $KDEWM"
kwrapper ksmserver $KDEWM
if test $? -eq 255; then
# Startup error
echo 'startkde: Could not start ksmserver. Check your installation.' 1>&2
xmessage -geometry 500x100 "Could not start ksmserver. Check your installation."
fi
echo 'startkde: Shutting down...' 1>&2
# Clean up
kdeinit_shutdown
dcopserver_shutdown
artsshell -q terminate
echo 'startkde: Running shutdown scripts...' 1>&2
# Run scripts found in $KDEDIRS/shutdown
for prefix in `kde-config --path exe| sed -e 's^bin/^shutdown/^g;s^:^ ^g'`
do
for file in $prefix/*
do
if test -f $file
then
$file
fi
done
done
echo 'startkde: Done.' 1>&2
Исходники, коды, конфиги "прицепляйте" файлами к сообщению; флуд буду резать!
Неужели ты думаешь, что ты умнее тех монстров из KDE кто писал этот скрипт? Проблема всё-таки локально у тебя. Возможно на хомяк прав для записи нет, о чем тебе и было сказано.
Полностью с тобою согласен брат мой в Linuxe Vitls, вся проблема во мне.
Linux включал всего 5 раз (изучаю) на пятый перестал запускаться KDE
Нашел причину с какой строки вывалиывется.
Файл то, как ты говоришь брат мой в Linuxe Vilts, скрипт создал, но не записал ни чего, дальше он пытается чтото записать в /dev/null (см. не полюбившийся брату в Linuxe скрипт) может там в чем дело?
Братья мои в Linuxe, может вы пришлете какие разрешения у вас стоят на хомяк, чтобы было с чем сравнивать.
Скажи честно, что ты испортил? Тогда будет легче помочь.
Ну ни чего не портил.
В руте ведь тварь грузится
[quote=KibkaloIg]Полностью с тобою согласен брат мой в Linuxe Vitls, вся проблема во мне.[/quote]
Золотые слова.
1. Никогда не работай а Х из-под пользователя root - это небезопасно для системы.
2. Права на хомяк как правило принадлежат владельцу этого хомяка.
3. /dev/null это нечто вроде чёрной дыры, что тудыть попадет оттуда не вернется.
4. Не смысла в том, чтобы знать, что пишется в /dev/null ибо переменная $TEST_TEXT (или как там она называется) всё равно хранит всякую пургу.
5. Посмотри права на запись в каталоги /tmp и $HOME/tmp, возможно причина в этом.
ошибка не втой строке где она на экран пишется
а скорее всего в
testfile_home=`mktemp "$HOME"/KDE.startkde.XXXXXX`
посмотри значение переменной
еcho $переменная
и проверь создается ли временный файл
какие у него права и есть ли права на запись в папку $HOME

Последние комментарии
10 лет 10 недель назад
10 лет 29 недель назад
10 лет 39 недель назад
10 лет 40 недель назад
11 лет 29 недель назад
11 лет 29 недель назад
11 лет 29 недель назад
11 лет 30 недель назад
11 лет 30 недель назад
11 лет 31 неделя назад