Ես միայն shell (sh, ոչ bash) մուտք ունեմ հեռավոր սարքի հետ SSH միացման միջոցով: Սցենարն ավարտվում է exec "$@"
-ով, որը, ինչպես հասկացա, փոխանցում է բոլոր պարամետրերը որպես տողեր։ Այժմ ես ուզում եմ կատարել այդ վերջին հրամանը նոր tmux նիստում, որպեսզի ծրագիրը շարունակվի կապի կորստի դեպքում։ Սա ռոբոտաշինության նախագծի համար է, հետևաբար ես ենթադրում եմ, որ կապը մասամբ ընդհատված է:
Ինչպե՞ս կարող եմ սա փաթաթել հրամանի մեջ, որը կաշխատի exec "$@"
-ում tmux-ում:
Ես արդեն փորձել եմ՝ tmux new "exec \"$@\""
և tmux new -s session send-keys "exec \"$@\""
, ինչպես նաև երկու տարբերակները՝ միայն "exec $@"
-ով
Այնուամենայնիվ, կարծես թե ոչինչ չի աշխատում shellchecker կամ իմ սևագիր .sh
ֆայլերում: Ես շատ շնորհակալ կլինեմ ցանկացած օգնության համար:
testtmux.sh
անունով ֆայլ, բովանդակությամբ՝#!/usr/bin/env sh
և երկրորդ տողexec tmux new -- "$@"
: Երբ ես այն անցնում եմ տերմինալի միջովsh -x ./testtmux.sh
-ով, այն ինձ հայտնվում է դատարկ tmux կեղևի մեջ: Երբ ես գործարկում եմsh -x ./testtmux.sh pwd
-ը, իմ հաջորդ հրամանի տողում ստանում եմ[exited]
62;c
-ով: Ես անտեղյակ եմ 29.04.2020pwd
-ն անմիջապես դուրս է գալիս, ուստի tmux սերվերը նույնպես դուրս կգա: Կամ փորձեքsleep 10000
-ի նման մի բան, կամ դրա փոխարեն արեքtmux start \; set -g remain-on-exit on \; new -- "$@"
: 29.04.2020open terminal failed: not a terminal
սխալը, երբexec tmux new -- "$@"
-ը ավելացնում եմ իմenv.sh
-ի վերջում: 30.04.2020-d
-ը նոր նստաշրջանում, եթե սկսում եք tmux-ը ինչ-որ տեղից առանց արտաքին տերմինալի, ինչպիսին է սկրիպտը: Այսպիսով,tmux new -d ...
: 30.04.2020new -d
-ը կսկսի tmux-ը առանց կցված նստաշրջանի հետ, եթե անհրաժեշտ է, որ այն կցվի, կարող եք փորձելssh -t
կամ-tt
՝ ստիպելու նրան ստեղծել pty: 30.04.2020exec tmux new -d "$@"
ի, և այն շարունակում է վերադառնում սխալմամբ: Ստուգելով ROS մատյանը՝ ես տեսնում եմ, որ python-իsocket
գրադարանը սխալconnection refused
է նետում: Արդյո՞ք tmux-ը սկսում է երեխայի նոր գործընթաց՝ այլ URI-ով: Դա շատ բան կբացատրի... 01.05.2020