Я запускаю коврик для мыши с оболочки:
mousepad &
[1] 24289
проверьте, куда это прибывает из:
which mousepad
/usr/bin/mousepad
запустите его с пути:
/usr/bin/mousepad &
взгляд через PS:
ps v -C mousepad
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
24289 pts/3 S 0:00 3 62 85441 10964 1.0 mousepad
24292 pts/3 S 0:00 0 62 85433 10864 1.0 /usr/bin/mousepad
Как мы видим, тот, вызванный без пути, отображен без пути и запущен с ПУТИ, и поэтому быть найденным
which mousepad
Простой как это, не так ли? Ожидайте! Что, если я запускаю коврик для мыши с меню? Ну, это могло бы быть указано с или не используя настройки PATH. Я попробовал. Нормальный запуск приводит к простому 'коврику для мыши' в ps v -C
. С тех пор ~ / мусорное ведро первая часть моего ПУТИ, я создаю макет там, и, вуаля, макет запускается с меню.
Но что, если Вы запускаете программу, которая удаляет себя? Который не найдет удаленную программу и сообщит о неправильной, если будет секунда в пути.
Таким образом, это - состояние состязания. Если Вы знаете, что Ваши программы не удаляют себя или не перемещены при исследовании их местоположения, ps v -C NAME
и which NAME
должен работать вполне прилично.
другой... для более старого NICs, инструмент mii команды является потрясающим
Я иду в reccomend ip
снова:
status=$(ip -o link show eth0 | awk '{print $9}')
(Девятый столбец является состоянием интерфейса),
UNKNOWN
в системе Ubuntu 10.10, и '1000' в системе CentOS 5.5.
– Stefan Lasiewski
03.03.2011, 20:42
При использовании администратора сети для сетевого соединения Вы могли бы запросить его через dbus несколько как это:
dbus-send --type=method_call --print-reply --system --dest="org.freedesktop.NetworkManager" "/org/freedesktop/NetworkManager" org.freedesktop.NetworkManager.state
(несколько удержанный от использования, но все еще работает, для более новых интерфейсов, Вы просто запросили бы другой адрес),
Если это возвращается "3", Вы "соединены", как описано в http://projects.gnome.org/NetworkManager/developers/spec.html#type-NM_STATE (но это ничего не говорит об интернет-соединении).
Если Вы действительно хотите знать, имеете ли Вы интернет-соединение, просто проверяете с помощью ping-запросов удаленный сервер как google.com и видите, работало ли это или нет.
Вы говорите, что просто хотите состояние онлайн/в режиме офлайн интерфейса и не обеспокоены скоростью или типом канала.
Попробуйте ethtool как корень:
# ethtool eth0 |grep "Link detected"
Link detected: yes
# ethtool eth1 |grep "Link detected"
Link detected: no
ifconfig
может также показать Вам состояние онлайн/в режиме офлайн, и эта команда обычно доступна любому пользователю в системе.
$ { /sbin/ifconfig eth0 | grep MTU: | grep -w UP >/dev/null 2>&1 ; }; echo $?
0
# This could return some false errors
$ { /sbin/ifconfig eth1 | grep MTU: | grep -w UP >/dev/null 2>&1 ; }; echo $?
1