0

First off, I only just started learning how to use Linux yesterday so my abilities are very limited.

I am essentially creating a script that I can run everytime I turn on my VPS and the script then turns on all the servers. However due to my lack of knowledge I have ran into some difficulties as once the script gets to turning the servers on it doesn't change the directories, leaving it as the default directory.

I am not sure if I am doing it right at all, so if you find a mistake in the script it would be great if you could correct me - or if you have a more efficient way of doing something.

#!/bin/bash
service mysqld start
sudo service httpd restart
sudo service vsftpd restart
echo finished initialization
cd ~/server_1 & dos2unix start.sh & sh start.sh & 
cd ~/server_2 & dos2unix start.sh & sh start.sh & 
cd ~/bungee_1 & dos2unix start.sh & sh start.sh && 
fg
echo finished
2
  • 1
    What will happen if you do cd ~/server_1 &?
    – muru
    Commented Dec 23, 2015 at 21:13
  • It will fork it and run it in the background in a different shell ?
    – Digisec
    Commented Dec 23, 2015 at 21:23

1 Answer 1

2

Did you mean to use && instead of & ?

4
  • No I believe one & makes it run as a background process?
    – Josh
    Commented Dec 23, 2015 at 21:12
  • 1
    It will run it in the background and not wait for it. How can you guarantee that it is still in the same directory to run the dos2unix and then the start.sh ? NB: my question was more of a statement.
    – Digisec
    Commented Dec 23, 2015 at 21:13
  • Oh wait, sorry I changed some of them from & to && and I think that solved it! Thanks for the help.
    – Josh
    Commented Dec 23, 2015 at 21:14
  • @Josh the set -e command would be another way to check (everything) for errors and abort the script on any failure.
    – thrig
    Commented Dec 23, 2015 at 22:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .