Skip to content

exec: Linux Command a Unix Command

18 de Červen de 2021
GettyImages 501161466 57eda9895f9b586c353f0481

V Linuxu vykon příkaz nahradí aktuální proces prostředí zadaným příkazem – v zásadě převede ID procesu aktuálního prostředí do nového procesu, který pak předpokládá, že PID. Většina běžných uživatelů Linuxu by neměla používat vykon. Je to výkonný program s úzkým případem použití pro skriptování. Za normálních okolností má zřídka hodnotu vyvolat vykon pro rutinní operace shellu.

Jak funguje „exec“

Když běžíš vykon s novým příkazem jako argumentem, Linux spustí tento nový příkaz pomocí stejného procesu jako shell, který jej vyvolal. Pokud jej spustíte bez zadání nového příkazu, dojde v aktuálním prostředí k příslušným přesměrováním. Například když spustíte relaci prostředí spuštěním programu pro správu terminálu, výchozí prostředí se automaticky vyvolá. Když píšete výstup, relace shellu se ukončí a v závislosti na softwaru pro správu terminálu může okno zmizet. Chcete-li vidět jak vykon funguje, spustit shell a poté spustit stejný shell ve stejné relaci. Pokud používáte například Zsh, pak při otevření okna terminálu spusťte další relaci Zsh.

Když zkontrolujete spuštěný proces, uvidíte, že při každém vyvolání shellu se objeví nová úloha se samostatným ID procesu. A pokaždé, když ukončíte relaci shellu pomocí výstup příkaz, jedna z těchto relací se ukončí. Pokud popravíte datum z relace prostředí uvidíte datum zobrazené na standardní výstup. Pokud pak použijete vykon Chcete-li přesměrovat standardní výstup do textového souboru, standardní výstup, který očekáváte, se zapíše do souboru, dokud neukončíte relaci Zsh, která vykon řízení. Po ukončení se standardní výstup zobrazí podle očekávání, protože původní relace Zsh se opět stane aktivní.

linux exec příkaz

Pouzdro pro „exec“

Jeden běžný případ použití pro vykon se týká úklidu skriptu. Pokud potřebujete použít skript k doplnění parametrů příkazu, ukončete skript pomocí vykon spouští nový program s těmito parametry a zavírá aktuální relaci shellu.