On a Linux box I want to check if a specific socket file exists. I know the socket files exists, but my checks in bash don’t show that to me:
$ ls -l /var/run/supervisor.sock srwxrw-rw- 1 root root 0 Jun 3 13:30 /var/run/supervisor.sock # <== THE FILE EXISTS!! $ if [ ! -f /var/run/supervisor.sock ]; then echo 'file does not exist!'; fi file does not exist!
Why oh why can’t bash see that the file exists?
Advertisement
Answer
http://www.tldp.org/LDP/abs/html/fto.html
Use -S to test if its a socket. -f is for regular files.
See man 1 test:
-e FILE
FILE exists
-f FILE
FILE exists and is a regular file
...
...
-S FILE
FILE exists and is a socket