KibkaloIg: Как трассировать sh скрипты?

18 сообщений / 0 new
Последнее сообщение
Гость
KibkaloIg: Как трассировать sh скрипты?

Как трассировать sh скрипты?

KibkaloIg (не проверено)

Что, народ, ни кто не знает?????????

Nick
Не в сети
Зарегистрирован: 20/09/2010

bash -x

KibkaloIg (не проверено)

Мне нужно startkde отрассировать
надо bash -x startkde ?

А как значение переменных просматривать??

Nick
Не в сети
Зарегистрирован: 20/09/2010

А нафига все это?

KibkaloIg (не проверено)

startkde у меня вываливается.
там есть тестовая запись в файл и одно сообщение об ошибке (которое выводится) в 3 местах прописана хочу знать в каком месте выпадает.
Конечно можно все вырезать и поодному тесту оставлять и так ловить поганую ошибку.
Но в качестве освоения Linuxa надо знать как скрипты пошагово прогонять и при этом смотреть переменные.

Ну не ужели ни кто не умеет этого делать на всём Северном Кавказе? Я молодой в Linuxe, и вы все что-ли молодые?
Ну и уроды мы, и как только ракеты в космос запускаем, просто не знаю!!!!

Nick
Не в сети
Зарегистрирован: 20/09/2010

Что в логах? Что на консоли?

KibkaloIg (не проверено)

Логи, чистые так как скрипт заканчивается штатно, у него там есть внтутренняя проверка. Он пытается из переменной сбросить текст в файл в домашний каталог. Если не получается тогда пишет в переводе с аглицкого " Вы не имеете разрешения записи в католог /Home/Имярек" эта проверка три раза проходит так, что я думаю в логах ни чего крименального нет. Хотя какой лог смотреть на startkde ?
Не знаю откуда у него запрет для записи появился, в один прекрасный день стала эта херня появлятся. я разрешений ни каких не убирал!!!!!

Nick
Не в сети
Зарегистрирован: 20/09/2010

А каталог есть?
<span class='smallblacktext'>[ Редактирование Wed May 18 2005, 09:51AM ]</span>

KibkaloIg (не проверено)

Ну извени брат Dumus

KibkaloIg (не проверено)

Что бы не быть многословным вот он злосчастный 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

Dumus
Аватар пользователя Dumus
Не в сети
Зарегистрирован: 17/09/2010

Исходники, коды, конфиги "прицепляйте" файлами к сообщению; флуд буду резать!

Мой микроблог: http://juick.com/Dumus/

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

Неужели ты думаешь, что ты умнее тех монстров из KDE кто писал этот скрипт? Проблема всё-таки локально у тебя. Возможно на хомяк прав для записи нет, о чем тебе и было сказано.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

KibkaloIg (не проверено)

Полностью с тобою согласен брат мой в Linuxe Vitls, вся проблема во мне.
Linux включал всего 5 раз (изучаю) на пятый перестал запускаться KDE
Нашел причину с какой строки вывалиывется.
Файл то, как ты говоришь брат мой в Linuxe Vilts, скрипт создал, но не записал ни чего, дальше он пытается чтото записать в /dev/null (см. не полюбившийся брату в Linuxe скрипт) может там в чем дело?
Братья мои в Linuxe, может вы пришлете какие разрешения у вас стоят на хомяк, чтобы было с чем сравнивать.

Nick
Не в сети
Зарегистрирован: 20/09/2010

Скажи честно, что ты испортил? Тогда будет легче помочь.

KibkaloIg (не проверено)

Ну ни чего не портил.
В руте ведь тварь грузится

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=KibkaloIg]Полностью с тобою согласен брат мой в Linuxe Vitls, вся проблема во мне.[/quote]
Золотые слова.
1. Никогда не работай а Х из-под пользователя root - это небезопасно для системы.
2. Права на хомяк как правило принадлежат владельцу этого хомяка.
3. /dev/null это нечто вроде чёрной дыры, что тудыть попадет оттуда не вернется.
4. Не смысла в том, чтобы знать, что пишется в /dev/null ибо переменная $TEST_TEXT (или как там она называется) всё равно хранит всякую пургу.
5. Посмотри права на запись в каталоги /tmp и $HOME/tmp, возможно причина в этом.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

Luter (не проверено)

ошибка не втой строке где она на экран пишется
а скорее всего в
testfile_home=`mktemp "$HOME"/KDE.startkde.XXXXXX`
посмотри значение переменной
еcho $переменная
и проверь создается ли временный файл
какие у него права и есть ли права на запись в папку $HOME

RSS-материал