Функция Bash для автоматического запуска команды в фоновом режиме и отключения - PullRequest
3 голосов
/ 05 октября 2019

Я пытаюсь создать в моем bashrc функцию, которая позволяла бы мне запускать любую команду и автоматически ее отключать.

например, launch ./myprogram или launch xdg-open myfolder

У меня естьиспользовался для этого много раз command ; Ctrl+Z ; bg ; disown и хотел бы просто создать ярлык для этих шагов.

Однако я не знаю, как встроить действие Ctrl + Z вскрипт bash. Я видел, что его действие - SIGTSTP , но я действительно потерян, как включить это в функцию bash.

Ответы [ 2 ]

4 голосов
/ 05 октября 2019

Вы можете запустить команду в фоновом режиме, а не останавливать ее и затем запускать в фоновом режиме. Используйте &:

$ cat > launch
#! /bin/bash
"$@" & disown

Ctrl + d

$ chmod u+x ./launch
0 голосов
/ 05 октября 2019

Для потомков и других людей, проходящих мимо, вот функция bash, которую я сделал:

 launch()
{
"$@" > /dev/null 2>&1 & disown
}
  • "$ @" принимает каждый аргумент, указанный в приглашении, как один
  • > /dev/null 2>&1 перенаправляет каждый вывод (stout и stderr) в dev / null, который автоматически удаляет их, так что он не появляется в оболочке
  • & запускает команду в фоновом режиме, что означает, что она позволитВы вводите другие команды в оболочке
  • disown, поскольку название подразумевает, что процесс больше не привязан к оболочке, и вы можете безопасно закрыть оболочку, не закрывая при этом процессвремя.
...