Это, вероятно, запускается для Вашей сессии гнома. Получить родительский идентификатор Вашего ssh-агента:
cat /proc/$SSH_AGENT_PID/status | fgrep PPid
Затем используйте число там для взгляда на то, какой процесс, который является:
more /proc/<PPidNUMBER_FOUND>/status.
На Ubuntu 12.04 Вы находите в первой строке Name: gnome-session
Вы, вероятно, найдете что-то под /etc/X11
:
grep ssh-agent /etc/X11/*
результаты в:
/etc/X11/Xsession.options:use-ssh-agent
попытайтесь комментировать это en перезапуск X
из man page:
By default, the on and off options affect only runlevels 2, 3, 4, and
5, while reset and resetpriorities affects all of the runlevels. The
--level option may be used to specify which runlevels are affected.
так что вы можете использовать awk
для извлечения только этих уровней(2,3,4,5):
chkconfig --list | grep httpd | awk '{ print $4 }' | cut -d ':' -f 2
и сделать то же самое для других уровней(3,4,5), заменив $4
на ($5
,$6
,$7
)
chkconfig на самом деле просто размещает сим-ссылки на сервисы init-scripts, обычно встречающиеся в /etc/init.d. Так что вместо того, чтобы приветствовать и просматривать вывод chkconfig, вы можете просто проверить существование сим-ссылки.
Когда я делаю chkconfig httpd на
, он создает ссылку с именем /etc/rc3.d/S85httpd
, указывая на init.d. chkconfig httpd off
удаляет эту ссылку (и делает больше, но это довольно несущественно здесь). Это может зависеть от дистрибутива.
Итак, в bash вы можете сделать [ -f /etc/rc3.d/S85httpd ]
, и если возвращаемое значение ( $?
) равно 0, то ссылка существует. Если 1, то нет, значит она выключена.
Приведенные ответы встраивают уровень выполнения в скрипт, в то время как вопрос, похоже, спрашивает одно "on" или "off", подразумевая, что это для текущего уровня выполнения.
Также, похоже, был упущен тот факт, что chkconfig
принимает аргумент, что делает grep
излишним.
Кроме того, его формат является последовательным, всегда помещая уровень выполнения перед элементами on/off в списке. Нет необходимости считать столбцы (и встраивать это в работу, которую нужно проделать, чтобы использовать решение).
Принимая это во внимание, вот сценарий, который печатает "on" или "off" для каждой данной службы на текущем уровне выполнения:
#!/bin/sh
THIS=$(runlevel | sed -e 's/^. //')
for svc in "$@"
do
chkconfig --list $svc 2>/dev/null | sed -e 's/^.*'$THIS'://' -e 's/[[:space:]].*//'
done