AMcoder - javascript, python, java, html, php, sql

Նոր tmux նիստի կատարում shell script-ով exec $@-ով

Ես միայն shell (sh, ոչ bash) մուտք ունեմ հեռավոր սարքի հետ SSH միացման միջոցով: Սցենարն ավարտվում է exec "$@"-ով, որը, ինչպես հասկացա, փոխանցում է բոլոր պարամետրերը որպես տողեր։ Այժմ ես ուզում եմ կատարել այդ վերջին հրամանը նոր tmux նիստում, որպեսզի ծրագիրը շարունակվի կապի կորստի դեպքում։ Սա ռոբոտաշինության նախագծի համար է, հետևաբար ես ենթադրում եմ, որ կապը մասամբ ընդհատված է:

Ինչպե՞ս կարող եմ սա փաթաթել հրամանի մեջ, որը կաշխատի exec "$@"-ում tmux-ում:

Ես արդեն փորձել եմ՝ tmux new "exec \"$@\"" և tmux new -s session send-keys "exec \"$@\"", ինչպես նաև երկու տարբերակները՝ միայն "exec $@"-ով

Այնուամենայնիվ, կարծես թե ոչինչ չի աշխատում shellchecker կամ իմ սևագիր .sh ֆայլերում: Ես շատ շնորհակալ կլինեմ ցանկացած օգնության համար:

29.04.2020

  • Պարզաբանելու համար՝ սա օգտագործվում է ROS-ի հետ: Roslaunch-ը թույլ է տալիս մեքենայի պիտակին ssh-ը տեղափոխել մեկ այլ մեքենա, որտեղ այն կատարում է լռելյայն սկրիպտը, որի վերջին տողը կլինի exec "$@", որոշ փոփոխական կարգավորումներից հետո: Ես ուզում եմ այս վերջին հատվածը փաթաթել tmux-ի մեջ, կապի դադարեցման դեպքում: 29.04.2020

Պատասխանները:


1

Փորձեք:

exec tmux new -- "$@"

Եթե ​​դա չի աշխատում, կարող եք փորձել նման բան.

exec tmux new -- sleep 10000

Եվ փորձեք կցել՝ համոզվելու համար, որ tmux-ը գործարկվում է (օրինակ, որ սցենարը կարող է գտնել tmux):

sh -x-ը կարող է նաև օգտակար լինել տեսնելու, թե իրականում ինչն է գործարկվում:

Նաև հիշեք, որ եթե tmux-ն արդեն գործարկված է, ներսում միջավայրը կարող է նույնը չլինել, ինչ սկրիպտում:

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

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..