Амперсанд после цикла for в сценариях оболочки

Программа net-tools устарела, и вместо нее был использован iproute2 :

program     obsoleted by
arp         ip neigh
ifconfig    ip addr
ipmaddr     ip maddr
iptunnel    ip tunnel
route       ip route
nameif      ifrename
mii-tool    ethtool

ip show отобразит состояние вашего сетевого интерфейса.

Кроме того, есть несколько других инструментов, которые помогут вам узнать состояние вашего сетевого интерфейса:

cat /sys/class/net//carrier

пример вывода:

1

1 означает, что ваш интерфейс работает и 0 не работает.

Или просто вы можете использовать следующую команду:

cat /sys/class/net//operstate

пример вывода:

UP

или

DOWN

1
01.09.2016, 20:44
1 ответ

Первый

for i in {1..3}; do
    ./script.sh >& log.$i  &
done

выполняется в текущей оболочке. Каждая итерация цикла запускает сценарий script.sh как задание текущей оболочки, поэтому вы можете их видеть.

Второй

for i in {1..3}; do
    ./script.sh >& log.$i  &
done &

сначала запускает подоболочку, которая управляет циклом. Затем 3 итерации создают 3 подпроцесса в этой оболочке, в то время как в вашей текущей оболочке вы можете видеть только 1 задание, которое представляет собой всю команду, еще не разбитую на конкретные задания. (Вы должны увидеть это 1 задание. Либо как Выполняется , либо как Готово .)

Исполняемый файл ./ tmp должен запускаться таким же образом в оба случая. Если вы видите echo "hello" , это означает, что ./ tmp был завершен ранее. Если он ведет себя ненормально, вам следует выполнить отладку (и добавить подробности в свой вопрос). Особенно убедитесь, что стартовые условия одинаковы во время его вызова в обоих случаях. Например. если есть проверки для существующих файлов, убедитесь, что в обоих случаях они существуют / не существуют и т. д.

2
27.01.2020, 23:47

Теги

Похожие вопросы