У меня есть файл сценария (start-conky.sh). Он выполняется правильно, но когда я делаю «ps -u», он показывает все еще PID, который, как я предполагаю, означает, что он все еще находится в памяти. Если я не убью, он просто останется там. Это не вызывает никаких проблем. Мне просто любопытно, как заставить скрипт завершиться после его выполнения. Я перечислил сценарий ниже. Я действительно не очень разбираюсь в написании программ, поэтому уверен, что есть ошибки. Кто-нибудь может помочь?
Заголовок: start-conky.sh «заголовок только что указан, его нет в сценарии»
#!/bin/bash
conky -c ~/Conky/scripts/config1 & conky -c ~/Conky/scripts/config2
exit
Когда выполняется скрипт, каждая строка выполняется по одной за раз, и каждая должна завершиться до начала следующей. Символ &
после команды запускает команду в фоновом режиме, позволяя немедленно выполнить следующий оператор, не дожидаясь завершения предыдущего.
Итак, ваш скрипт запускает один экземпляр conky
в фоновом режиме, используя файл config1, а затем запускает другой экземпляр conky
на переднем плане, используя файл config2, а затем ожидает завершения этого экземпляра перед обработкой следующего exit
строка. Если вы измените свой скрипт, чтобы иметь &
после каждой команды conky
, как это ...
#!/bin/bash
conky -c ~/Conky/scripts/config1 &
conky -c ~/Conky/scripts/config2 &
exit
... он не будет ждать их завершения перед обработкой команды exit
.
Как заявили Иоанн и Элия, &&
используется для объединения двух команд вместе со второй, выполняющейся только в том случае, если первая выполнена успешно. Обычно это делается из командной строки, а не из сценария. Это объясняет, почему после внесения этого изменения второй экземпляр conky никогда не запускался. Первый никогда не заканчивался, чтобы начать второй.
Я надеюсь, что это прояснит некоторые вещи.
Что должен &
делать? То, как вы его используете, отправит conky -c ~/Conky/scripts/config1
в фоновом режиме.