Более простое и многоразовое решение, возможно, для использования настраиваемой структурной директивы.
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({
selector: '[appTimes]'
})
export class AppTimesDirective {
constructor(
private templateRef: TemplateRef<any>,
private viewContainer: ViewContainerRef) { }
@Input() set appTimes(times: number) {
for (let i = 0 ; i < times ; i++) {
this.viewContainer.createEmbeddedView(this.templateRef);
}
}
}
И используйте его следующим образом:
<span *appTimes="3" class="fa fa-star"></span>
У меня была эта проблема в программе, которую я записал год назад - оказывается, что ответ является скорее сложным. Необходимо будет использовать nohup, а также перенаправление вывода, как объяснено в Википедии artcle на nohup, скопированный здесь для удобства.
задания Nohuping фона, например, полезны, когда зарегистрировано на пути SSH, так как фоновые задания могут заставить оболочку зависать на выходе из системы из-за состояния состязания [2]. Эта проблема может также быть преодолена путем перенаправления всех трех потоков ввода-вывода:
nohup myprogram > foo.out 2> foo.err < /dev/null &
Если Вы/можете, сохраняют соединение открытым, Вы могли бы использовать экран , если Вы имеете права установить его.
user@localhost $ screen -t remote-command
user@localhost $ ssh user@target # now inside of a screen session
user@remotehost $ cd /some/directory; program-to-execute &
Для отсоединения экранной сессии: ctrl-a d
Для списка экранных сессий:
screen -ls
Для повторного прикрепления сессии:
screen -d -r remote-command
Примечание, что экран может также создать несколько оболочек в каждой сессии. Подобный эффект может быть достигнут с tmux.
user@localhost $ tmux
user@localhost $ ssh user@target # now inside of a tmux session
user@remotehost $ cd /some/directory; program-to-execute &
Для отсоединения tmux сессии: ctrl-b d
Для списка экранных сессий:
tmux list-sessions
Для повторного прикрепления сессии:
tmux attach <session number>
значение по умолчанию tmux клавиша CTRL, ' ctrl-b ', несколько трудно использовать, но существует несколько примеров tmux конфигурации, которые поставлются с tmux, который можно попробовать.
Я думаю, что необходимо будет объединить несколько этих ответов для получения то, что Вы хотите. Если Вы используете nohup в сочетании с точкой с запятой и обертываете все это в кавычки, то Вы добираетесь:
ssh user@target "cd /some/directory; nohup myprogram > foo.out 2> foo.err < /dev/null"
, который, кажется, работает на меня. С nohup Вы не должны добавлять & к команде, которая будет выполнена. Кроме того, если Вы не должны читать ни один вывод команды, можно использовать
ssh user@target "cd /some/directory; nohup myprogram > /dev/null 2>&1"
для перенаправления всего вывода к/dev/null.
Это был самый чистый способ сделать это для меня: -
ssh -n -f user@host "sh -c 'cd /whereever; nohup ./whatever > /dev/null 2>&1 &'"
Единственное, что выполняется после этой команды, - это настоящая команда на удаленной машине