我正在通过自定义创建的服务执行 bash 脚本。在用户登录时,脚本被执行。我可以使用 ps -ef 命令验证程序是否正在运行。
我唯一想要发生的事情是,我希望终端打开并显示脚本执行的输出。
我是 Linux 新手。仍在学习中。到目前为止,体验不是很好。
运行 Ubuntu 18.04。
答案1
让我用这个简单的例子来演示实现这一点的一种方法:
两个脚本:
launcher.sh
, 和sample.sh
脚本内容:
launcher.sh
:#!/usr/bin/env bash gnome-terminal --working-directory="/home/georgek/Documents/askubuntu" -- '--rcfile ./setup.bash ./launcher.sh'
sample.sh
:#!/usr/bin/env bash du -h ./; read line;
sample.sh
像launcher.sh
这样调用:launcher.sh
这会将文件传递sample.sh
到终端,笔记:直到您按下该键,才会关闭。read line
请根据需要进行修改。gnome-terminal
ENTER
笔记:
-是bash 所报告的--
首选-告诉终端从此目录运行命令。-x
--working-directory="/home/georgek/Documents/askubuntu"
- 使用此文件设置变量,来自
man bash
:--rcfile 文件 如果 shell 是交互式的,则从文件而不是系统范围的初始化文件 /etc/bash.bashrc 和标准个人初始化文件 ~/.bashrc 执行命令(请参阅下面的 INVOCATION)。
答案2
最好的方法是安装screen
或byobu
获得更好的用户界面,然后在那里运行脚本:
screen -S sessionname -d -m /path/to/script
这将允许您重新连接到会话
screen -r sessionname
考虑到您是从 systemd 服务启动它,您可能需要完成两件事:要么允许每个人进行多用户会话,要么仅为您的用户名配置个人访问权限。这将需要有自定义配置文件并将其传递给带有-c
标志的屏幕。
也可以看看: