Как запускать несколько фоновых заданий в Linux?

Потому что так должно быть.

<(...) в bash - это синтаксис для подстановки процесса. Он скопирован из того же оператора в ksh .

<, (, ) , | , & , ; являются специальными лексическими токены в bash , которые используются для формирования специальных операторов в различных комбинациях. <, <(, << , <& ... каждый имеет свою роль. < это для перенаправления. <файл , <файл будет перенаправлять ввод из файла. <'(файл)' перенаправит ввод из файла с именем (файл) , но <(файл) - это другой оператор, который не является оператором перенаправления. .

<(файл) будет <, за которым следует (файл) . В этом контексте в bash , (файл) недопустим. (...) может быть действительным как отдельный токен в некоторых контекстах, например:

(sub shell)
func () {
  ...
}
var=(foo bar)

Но не в

sort < (cmd)

В оболочке fish все по-другому. В fish , (...) используется для подстановки команд (эквивалент $ (...) в bash ). А < предназначен для перенаправления ввода, как в Bourne-подобных оболочках.

Таким образом, в fish :

sort <(echo file)

будет таким же, как:

sort < (echo file)

То есть:

sort < file

Но это нечто совершенно отличное от подстановки процесса bash .

В оболочке yash другая оболочка POSIX, <(...) предназначена не для замены процесса , а для перенаправления процесса

Здесь

sort <(ls -l)

Сокращение от:

sort 0<(ls -l)

- это оператор перенаправления. Это более или менее эквивалентно:

ls -l | sort

В то время как в bash , <(ls -l) расширяется до пути канала, поэтому это больше похоже на:

ls -l | sort /dev/fd/0

В zsh , (...) перегружен как оператор подстановки ( (*. Txt | *.png) будет расширяться до файлов txt и png ) и в качестве квалификатора glob ( * (/) , например, расширяется до файлов каталога).

В zsh , в:

sort < (ls -l)

(ls -l) будет рассматриваться как квалификатор glob. Квалификатор glob l должен соответствовать количеству ссылок и ожидает число после l (как в ls -ld ./*(l2) будет перечислять файлы с 2 ссылками), поэтому вы получаете там ошибку zsh: number expected .

sort <(w) выдала бы ошибку zsh: совпадений не найдено: (w) вместо этого, поскольку (w) соответствует файлам с пустым именем, которые являются записываемый.

sort <(w | cat) отсортировал бы содержимое файлов w и / или cat в текущем каталоге ...

{{ 1}}
5
21.08.2018, 05:49
2 ответа

Cuando comienza un trabajo con un signo &al final, lo envía a un segundo plano. Puede tener tantos trabajos en segundo plano como desee.

Cuando un trabajo en segundo plano requiere entrada de terminal, se suspende automáticamente y recibe una notificación al respecto, ya sea antes del siguiente símbolo del sistema (, es decir, después de haber ejecutado otro comando ), o inmediatamente si usóset -b.

Cuando cierre la sesión, todos los procesos en segundo plano en ejecución recibirán una señal para notificarles que el terminal se ha ido. El comportamiento predeterminado de esta señal es detener el proceso, pero puede cambiar esto iniciando el trabajo en segundo plano mediante el comando nohup.

Para -trabajos en segundo plano de ejecución prolongada, también puede usar el comandoatpara que un demonio independiente inicie el comando en un momento específico (que puede sernow). En este caso, la salida del comando se le enviará por correo, pero esto requiere que el sistema de correo de su computadora esté configurado correctamente.

2
27.01.2020, 20:34

Вам нужно только убедиться, что вашим заданиям не нужен терминал в -или вывод. Они должны исходить из файлов или идти в них, и они будут работать долго и счастливо.

1
27.01.2020, 20:34

Теги

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