Hello, I have a script like this: ip netns del test-ns ip netns add test-ns ip link add tun-test type gre local any remote 8.8.8.8 ip link set tun-test netns test-ns As is, the script will fail exactly every other time: --------------- # ./nstest.sh RTNETLINK answers: File exists Cannot find device "tun-test" # ./nstest.sh # ./nstest.sh RTNETLINK answers: File exists Cannot find device "tun-test" # ./nstest.sh # ./nstest.sh RTNETLINK answers: File exists Cannot find device "tun-test" # ./nstest.sh # ./nstest.sh RTNETLINK answers: File exists Cannot find device "tun-test" # ./nstest.sh # ./nstest.sh RTNETLINK answers: File exists Cannot find device "tun-test" # ./nstest.sh # ./nstest.sh RTNETLINK answers: File exists Cannot find device "tun-test" --------------- That's because "ip netns del" seems to return without actually finishing to fully delete the NS. Adding a "sleep 1" after the first line, makes the script complete successfully every time. This is a very unexpected behavior. I would ask for a better workaround than "sleep 1", but I believe there should be no workaround, and the script should reliably work as posted. Hope you can consider changing this. Thanks!