使用tmux或有screen什么好处?你能提供一些能够立即改善我工作流程的简单例子吗?(我使用SSH).此外,我很乐意将此问题标记为"社区维基",但我不确定如何.
我正在使用OSX雪豹,以备记录.
当我直接从终端使用emacs时,我有一个颜色设置(例如c/c ++),我很满意 - 绿色黑色,红色评论,彩色关键词等等.其中一些是在我的'终端首选项'中设置,有些在我的〜/ .emacs文件中(见下文).当我从屏幕运行emacs时,基本颜色方案是相同的(绿色黑色),但着色是不同的(例如注释字符是红色,但不是整个评论) - 并且真的很烦人.
任何帮助,将不胜感激!
在我的'.emacs'文件中(这在gnu-screen emacs中停止工作):
(global-font-lock-mode t)
(custom-set-faces
'(font-lock-comment-face
((((class color) (background light))
:foreground "tomato")
)))
Run Code Online (Sandbox Code Playgroud)
在我的'.screenrc'文件中:
shell -$SHELL # colors still don't work without this
#term xterm-256color # using this doesn't fix the colors (suggested on some forums)
altscreen on
startup_message off
Run Code Online (Sandbox Code Playgroud)
我认为我的.screenrc文件中的命令'shell - $ SHELL'使得屏幕上的命令提示符与默认命令相同 - 它确实使我的命令行说'computername:/ DIR/username $'而不仅仅是'庆典-3.2 $"
================================================== ===============
解决方案:感谢Greg E.
我需要在屏幕上设置我的终端模拟器以匹配我的普通shell.为此,我补充道
export TERM='xterm-color'
Run Code Online (Sandbox Code Playgroud)
到〜/ .bash_profile
出于某种原因,'〜/ .screenrc'文件中的'term xterm-color'不起作用.
我正在设计一个脚本来在命名的屏幕会话中启动进程.
as_user "screen -p 0 -S **$command** -X eval 'stuff \"wine LFS.exe /cfg=**$command**.cfg\"\015'"
Run Code Online (Sandbox Code Playgroud)
因此,bash myscript.sh start test将创建一个名为test的屏幕并test.cfg使用该软件运行.
现在我希望我的脚本访问特定的屏幕会话并执行CTRL+ C以停止正在运行的进程,以便我可以终止屏幕会话.
像这样的东西:
as_user "screen -p 0 -S **$command** **... kill the process with ctrl-c...**"
as_user "screen -p 0 -S **$command** -X eval 'stuff \"exit\"\015'"
Run Code Online (Sandbox Code Playgroud) 我想运行R一个远程下一个盒子地方 Emacs(我不希望在远程机器上运行的Emacs).
(let ((default-directory "/user@remote:~"))
(R))
Run Code Online (Sandbox Code Playgroud)
一切正常,但是当连接remote丢失时,R死亡.这并不好,因为这意味着我必须在重新R启动后重新加载所有数据,这需要时间.
是否有可能告诉TRAMP使用持久终端?(GNU Screen或tmux或Mosh或dtach)
另请参见emacs-develthread tramp:sshx:(screen | tmux).
这个问题是关于linux实用程序屏幕的.
我想创建一个脚本来启动屏幕中的程序,然后在启动后自动将其分离.
我有脚本启动屏幕,在屏幕上启动命令,但我现在的问题是如何分离它?
谢谢
我想在shell模式下在emacs中附加screen或tmux.我经常发现自己在远程服务器的屏幕内运行带有劣质进程的emacs; 如果我可以将工作流程转移到本地emacs + TRAMP,那就太好了; 但是,必须具备重新连接持久会话的能力.(这种工作流程对R [1]中的分析特别有用)
Shell模式是相当可取的,因为我在使用Mx术语或Mx ansi-term + screen + R的组合时遇到了各种故障甚至崩溃.但是,我似乎无法摆脱ansi彩色渲染为转义码在Mx shell下运行时的屏幕.当我使用时ansi-color-for-comint-mode-on,它们很好 - 但是一旦屏幕出现,就会变得非常混乱.
有没有人想出用shell + screen或tmux正确解释ansi颜色的条件?如何完全摆脱颜色?在运行持久性远程进程并将它们附加到本地emacs方面还有其他选择吗?
[1] http://blog.nguyenvq.com/2010/07/11/using-r-ess-remote-with-screen-in-emacs/
使用Vim在GNU屏幕上工作时,我无法使用鼠标调整分割窗口大小.其余全鼠标操作在Vim的正常工作(滚动,用鼠标选择文本等).我一般都se mouse=n在我.vimrc.调整GNU屏幕外的窗口缓冲区大小非常好.
这是vim信息:
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jan 19 2012 18:05:29)
Included patches: 1-401
Compiled by root@arun-mu
Normal version without GUI. Features included (+) or not (-):
-arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent +clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments -conceal +cryptv +cscope +cursorbind
+cursorshape +dialog_con +diff +digraphs -dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path +find_in_path +float +folding -footer +fork() +gettext -hangul_input -iconv
+insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent …Run Code Online (Sandbox Code Playgroud) 我有一个运行多个窗口的屏幕会话.我想附加它,在其中创建一个新的屏幕窗口并在该新窗口中启动一个shell.
问题:如何从屏幕会话外的命令行执行此操作?
我已经尝试了很多,例如screen -x(但它附加到现有的一个屏幕窗口;它不会创建一个新窗口,也不会启动一个新的shell).任何提示都是受欢迎的.
环境是Linux(Ubuntu 12.04).
我对shell脚本很新(你可能会说我刚开始).我需要的是编写一个shell脚本来打开1"屏幕"会话.然后我想在同一个会话中打开多个窗口(比如说10个)并让每个会话做一些事情,例如打印"你好".所以这是我的代码的一部分,但它只创建一个窗口(0),并且不会在该窗口上打印任何内容:
#!/bin/bash
screen-d -m -S mysession
for n in {1..10}; do
i=$(($n-1))
screen -S mysession -p $i -X echo "hello"
done
Run Code Online (Sandbox Code Playgroud)
就像我说的,我的示例代码不起作用!它打开一个只有一个窗口'0'的会话,并且在窗口'0'上的终端上没有打印任何内容.
你能帮我个忙吗?该代码应该打开一个屏幕会话,然后在循环中打开10个窗口并在每个窗口中打印"hello".
先感谢您!
阿贝丁
我在php中遇到tmux/screen问题.
当我尝试启动屏幕会话时没有任何反应.
当我尝试启动一个tmux会话时,它只有在我给www-data shell访问时才有效,即便没有添加窗口:(
我想要实现的目标:
我想为我在虚拟机上运行的某些进程编写Web接口.
为此,我写了一些脚本(因为我在linux debian机器上,所以在bash中).
这些脚本需要做一些事情:
- 启动一个新的tmux窗口(和会话,如果它还不存在)
- 查看tmux窗口是否正在运行/活动
- 停止进程(自动关闭窗口)
并手动执行(在终端)这些脚本表现得很好.
现在,webinterface将启动这些脚本(因此它们将通过php中的exec函数执行).
由于它们运行在php上,因此它们以用户www-data运行,因此我无法访问由www-data创建的tmux会话.
所以我在启动Window/session时有一些建议:
我有一个命名会话
tmux new-session -s $ SessionName
它需要从php开始分离
tmux new-session -d -s $ SessionName
我希望能够以超级用户身份访问会话 - >我必须定义一个socketlocation
tmux -S $ SocketLocationPath new-session -d -s $ SessionName
所以我的命令最终看起来像这样:
tmux -S /tmp/pairedsession.socket new-session -d -s "ProcessGroup1"
Run Code Online (Sandbox Code Playgroud)
此命令有问题:
没有shell访问权限,此命令返回无法连接到服务器(因为新会话通常应该启动服务器,所以很奇怪)
shell访问(出于安全原因我不喜欢)然而会话是按照我想要的方式创建的
但仍有一些问题:
正如我之前所说,我想创建一些窗口来处理进程
命令如下所示:
tmux -S $SocketLocationPath new-window -t "$SessionName" -n "$WindowName" "$cmd"
Run Code Online (Sandbox Code Playgroud)
这只适用于全局进程(如htop)或php目录中的进程(就像其他脚本一样)
我想要做的是在自己的工作目录中执行一个进程,该目录不一定在php目录中 - > 如何使用我改变了
我尝试了什么