我在远程 CentOS 5.6 机器上做一些工作,但我的网络一直在掉线。有没有办法在重新连接后恢复挂起的会话?
编辑:我正在用 yum 进行一些更新和安装,我担心如果进程一直挂在他们正在做的事情中间,这可能是一个问题。
以下是我认为我需要了解的其他问题:
来自非 X 会话?(意味着 root 没有登录到 X)
如果多人登录 X,我是否可以自动检测谁在哪个屏幕上,从而以编程方式检测我需要在哪个屏幕上启动应用程序?
我可以以用户身份启动应用程序吗?(好吧,我 99.999% 确定这是肯定的)
我可以检测 X 组的用户是否登录到 X 吗?
我试图重新附加到长时间运行的 tmux 会话以检查 python 网络应用程序。然而tmux attach
声称没有正在运行的会话,并ps
显示一个tmux
进程(第一行),但用问号而不是pts
数字。
这是什么意思——这个 tmux 会话是否永久丢失了,可能是什么原因造成的?有没有办法查看 python 进程的当前状态,在 tmux 会话中产生并在pts/19
(第二行)中运行?
[mhermans@web314 ~]$ ps -ef | grep mhermans
mhermans 16709 1 0 Mar04 ? 00:26:32 tmux
mhermans 8526 16710 0 Mar04 pts/19 00:20:04 python2.7 webapp.py
root 9985 6671 0 10:18 ? 00:00:00 sshd: mhermans [priv]
mhermans 10028 9985 0 10:18 ? 00:00:00 sshd: mhermans@pts/16
mhermans 10030 10028 0 10:18 pts/16 00:00:00 -bash
mhermans 16247 10030 6 10:28 pts/16 …
Run Code Online (Sandbox Code Playgroud) 我正在校准我的触摸屏,发现最好的工具是 xinput_calibrator。所以我用了它。它有两个选项(其中一个不起作用),所以我在这里是第二个。它说我应该“在以您的 X 会话开始的脚本中”执行此命令:
xinput set-int-prop "3M 3M USB Touchscreen - EX II" "Evdev Axis Calibration" 32 14410 2146 14574 2115
所以我尝试了~/.xinitrc
,~/.xsession
和~/.xsessionrc
,所有这些都不存在。所以我创建了它们,确切的内容是这个命令。前两个文件使我的登录失败(登录后,我退回到登录屏幕)。
使用最后一个文件,校准是有效的,但只有在登录后...
我需要在登录对话框出现之前运行该命令。我想在/etc/X11/xinit/xinitrc
没有结果的情况下将此命令添加到末尾(没有任何改变)。此外,我尝试将其添加到/etc/X11/Xsession.d/40x11-common_xsessionrc
(在检查了一些文件之后)的末尾,但结果与将其添加到~/.xsessionrc
.
如何在登录屏幕显示之前运行此命令(这是在窗口管理器启动之前,还是在 X 会话启动之前)?
(如果重要的话,我正在使用默认窗口管理器运行 Kubuntu)
更新因为我使用的是 Kubuntu,所以我的显示管理器是 kdm。正如接受的答案所暗示的那样,我编辑了该文件/etc/kde4/kdm/Xsetup
,并且如此处所述,我在默认情况下存在的命令之前添加了该命令。它就像一个魅力:)
我通过多个登录会话访问一台机器。会话的生命周期可能重叠也可能不重叠。就我而言,这些登录会话目前始终通过 SSH,但我也更愿意处理本地会话。
我有时需要在这些会话中使用 D-Bus,并且我想在这些登录会话中共享相同的 D-Bus 会话,以便使用 GVFS。
推荐的方法是什么?我不想破坏我可能不知道的 D-Bus 的任何使用。我考虑过使用
export $(dbus-launch --autolaunch $(cat /var/lib/dbus/machine-id))
Run Code Online (Sandbox Code Playgroud)
但是(从 Ubuntu 12.04 开始)这似乎不对:
$DISPLAY
;dbus-launch
抱怨“自动启动错误:X11 初始化失败”。并且不启动守护进程;dbus-launch
那个“男人页面状态--autolaunch
的选项被认为是一个内部实现细节(...)。无论如何,没有真正的理由在 libdbus 实现之外使用它。”dbus-launch
D-Bus 套件中的其他工具是否支持自动检测运行dbus-daemon
并连接到它?~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-${DISPLAY#*:}
如果 D-Bus 是通过 X 连接启动的,则必要的信息在其中,但如果没有可用的 X 连接,则似乎不会存储在任何地方。
我应该拼凑自己的 D-Bus 会话文件吗?如果我这样做,我应该使用目录中的~/.dbus/session-bus
文件吗?路径是否/var/lib/dbus/machine-id
可靠且可移植?
有人可以以一种易于理解的方式解释在unix和unix类系统中控制终端的概念吗?它与会话有关吗?如果是,那么如何?
我正在寻找一个很好的概述文档,描述现代 Linux 会话中涉及的守护进程和服务堆栈。尽管阅读了有关dbus
, 和 的各种文档systemd
,但我仍然没有了解大局。
特别是,我正在寻找这些问题的答案(不要回答问题,他们应该只说明我在寻找什么样的文档):
登录后,哪个进程是用户会话的root?
应该启动哪些进程,为什么?我正在寻找一个与桌面无关的答案,无论是启动 Gnome、KDE、FVWM 还是简单的 shell。
所有这些守护进程都扮演什么角色?哪些会单独运行,哪些会依赖其他人?哪一个应该由谁开始,为什么,以及多长时间?谁应该维护那个动物园?
我在问,因为我发现启动后我有一个完整的守护进程动物园:systemd-journald
, systemd-udevd
, dbus-daemon
,
systemd-logind
. 但还不够:除了这些,运行超轻量级PDF查看器zathura
进一步填充我的会话dbus-launch
,
dbus-daemon
,at-spi2-registryd
,和at-spi-bus-launcher
,后者启动另一个dbus-daemon
。他们以前都没有去过那里,也没有人被邀请过,但他们会留在房子里,给我一种令人毛骨悚然的感觉,直到我退出。我确定我在这里遗漏了一些东西......
另一个例子:登录后,我systemd
使用我的用户 UID 运行,但我不知道它应该做什么(从 206 版开始,我认为我不应该将其用作会话管理器,对吗?)。它有一个子进程(sd-pam)
,我没有找到关于它的文档。
他们在做什么?这个设置背后的想法是什么?
澄清我的观点:在“过去”,知道这login
会启动我的登录 shell(bash
, 执行~/.profile
)就足够了
,从那时起,我可以继续构建会话,具体取决于情况,可能是启动screen
, 或startx
.
我经常不得不在不可靠的 wifi 环境中通过 ssh 连接到服务器。在服务器上,我运行 screen,所以如果我断开连接,我可以重新连接并恢复 screen 会话,并从我中断的地方继续,但连接丢失仍然是一个主要的时间消耗:如果连接断开而我'm 在服务器上,终端窗口往往会冻结。我必须杀死该选项卡,打开一个新选项卡,再次通过 ssh 连接到服务器并恢复屏幕会话。我已经尝试过在服务器上运行 screen 并在本地 screen 。无论哪种方式,当连接断开时它都会冻结。
有什么办法可以让我拥有类似于 screen 或 screen 本身的东西,它会自动尝试重新连接并保持会话运行,所以我不必手动重新连接?通常,当我失去连接时,我认为这只是很短的一段时间 - 可能不到一秒钟。
我使用的是 Ubuntu 14.04 LTS,MATE 版。谢谢