小编mul*_*sen的帖子

我使用的是哪种终端类型?

我已经用 Ubuntu 12.04 和 Debian 7 对此进行了测试。当我这样做时

echo $TERM
Run Code Online (Sandbox Code Playgroud)

我得到

xterm
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用下拉菜单“帮助”>“关于”,那么它会显示gnome terminal 3.4.1.1.

这是否意味着我只使用 gnome-terminal?还是只是xterm?还是 gnome-terminal 是 xterm 的扩展?我糊涂了。

terminal-emulator terminal xterm gnome-terminal

57
推荐指数
3
解决办法
11万
查看次数

查看另一个 pts 的标准输出

这是情况。我把我的电脑留在家里,从 2TB 硬盘驱动器到另一个 2TB 硬盘驱动器进行 rsync(这需要一段时间,因为它们都是 USB 2.0)。我现在正在工作,并且已通过 ssh 连接到我的家用电脑。如果我这样做,ps aux | grep rsync我可以看到以下内容:

1000  7214 18.8  0.1  30636  1368 pts/0 S+   00:52 134:00 rsync -vr /media/master /media/slave
Run Code Online (Sandbox Code Playgroud)

但是我想看看 rsync 到底在做什么。当我在家时,标准输出显示在我的终端中,rsync 的详细模式显示当前正在复制哪些文件。有没有办法读取另一个pts的stdout?

$ ps -t pts/0
7214 pts/0    02:14:42 rsync
Run Code Online (Sandbox Code Playgroud)

我做了一点谷歌搜索,似乎/proc/pid/fd可以找到答案,但我不确定这一点......

PS我当然有sudo权限。

process terminal io-redirection rsync

24
推荐指数
3
解决办法
4万
查看次数

如何找到交换 uuid

我正在设置突袭。sda在安装过程中使用,我刚才复制的分区表sdasdb像这样:

$ sudo sfdisk -dL /dev/sda > partition_table_sda
$ sudo sfdisk /dev/sdb < partition_table_sda
Run Code Online (Sandbox Code Playgroud)

但是我注意到sda交换空间有一个 uuid,但sdb没有:

$ sudo blkid
/dev/sda5: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="swap" 
/dev/sda1: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="ext4" 
/dev/sdb1: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="ext4"
Run Code Online (Sandbox Code Playgroud)

分区看起来是正确的,只是缺少 uuid:

$ sudo fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): …
Run Code Online (Sandbox Code Playgroud)

partition swap uuid

19
推荐指数
1
解决办法
3万
查看次数

xterm 不显示 unicode

我一直无法让我的终端显示 unicode 符号。例如,在我拥有现在的操作系统之前,我将 ctrl+a 映射到 vim 中的希腊 mu,它可以在其他计算机上运行,​​但不能在我当前的 xterm 上运行。这是我的相关部分.vimrc

set encoding=utf-8
"map control-a to mu
imap <C-a> <C-k>m*
Run Code Online (Sandbox Code Playgroud)

另外,我需要在 python 中输出 sympy 方程,这适用于其他计算机,但不适用于我当前的 xterm。而不是这个:

$ python
Python 2.7.3 (default, Mar 14 2014, 11:57:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sympy
>>> x = sympy.symbols('x')
>>> sympy.init_printing()
>>> (sympy.sqrt(x**3/(x+1)), 1)
?     _______   ?
?    ?    3     ?
?   ?    x      ?
?  ?   ????? , 1?
???    x + …
Run Code Online (Sandbox Code Playgroud)

xterm unicode

9
推荐指数
2
解决办法
2万
查看次数

SSH 到不受信任的机器

如果我通过 SSH 连接到远程服务器,那台机器的管理员是否可以使用我的 SSH 会话将数据发送回连接并向我的本地 PC 执行某些操作?我使用 DSA 密钥并且不允许密码登录到我的 SSH 服务器,并且我不允许 root 访问。如果尽管采取了这些预防措施,这仍然是可能的,您能否解释一下代码/链接是如何完成的,以便我理解?

我担心的另一件事是,如果我连接到远程服务器,管理员可能会劫持我的 pts 会话,然后只需键入exit即可访问我的 PC。再次,请让我知道这是否可行,如果可以,请提供代码/链接

我已经做了一些谷歌搜索,到目前为止什么也没找到。

security ssh

7
推荐指数
3
解决办法
1010
查看次数

wpa_supplicant 噩梦

我一直在摆弄 wpa 请求者好几天了,我终于到了在谷歌上找不到任何新线索的地步。所以问题来了:我刚刚在运行 debian wheezy 的台式电脑上安装了一个新的 tp-link tl-wn881nd pci-e wifi 卡。wlan0声称已连接(ish?见下文)到接入点,ifconfig报告我分配给它的正确静态 IP 地址,但是我无法 ping 接入点并syslog说握手有错误。

首先,我读过可能network-manager会搞砸的事情。我很确定这对我来说不是问题:

$ which NetworkManager
##### blank #####
$ dpkg -l | grep -i network-manager
rc network-manager           0.9.4.0-10    amd-64    network management framework (daemon and userspace tools)
ii network-manager-openvpn   0.9.4.0-1     amd-64    network management framework (OpenVPN plugin core)
Run Code Online (Sandbox Code Playgroud)

我的电脑规格是:

$ uname -a
Linux mypc 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
$ sudo dmidecode | grep -iA3 '^system information'
System …
Run Code Online (Sandbox Code Playgroud)

wlan

6
推荐指数
1
解决办法
2万
查看次数

未指定端口时奇怪的 telnet 客户端行为

在 Debian Jessie 上,使用 php5.6 和 telnet 版本:

$ dpkg -l | grep telnet
ii  telnet                         0.17-36                      amd64        The telnet client
Run Code Online (Sandbox Code Playgroud)

我编写了一个 php 脚本来侦听端口 23 以获取传入的 tcp 连接。为了测试,我 telnet 进入它,但是我注意到它实际上在我像这样 telnet 进入它时有所不同:

$ telnet localhost 23
Run Code Online (Sandbox Code Playgroud)

vs 像这样:

$ telnet localhost
Run Code Online (Sandbox Code Playgroud)

但根据man telnet,它应该没有区别:

port 指定要联系的端口号或服务名称。如果未指定,则使用 telnet 端口 (23)。

如果我不指定端口,那么线路上会出现一些奇怪的噪音。或者也许它不是噪音?但是如果我确实指定了端口,那么我就不会在线路上听到这种噪音。噪声是以下一组 ascii 字符:

<FF><FD><03><FF><FB><18><FF><FB><1F><FF><FB><20><FF><FB><21><FF><FB><22><FF><FB><27><FF><FD><05>
Run Code Online (Sandbox Code Playgroud)

以防万一这是由于我的服务器端代码中的错误造成的,这里有一个脚本的缩减版本,它确实表现出了噪音(尽管我认为代码中没有任何错误,我只是包括这是因为肯定有人会问):

$ dpkg -l | grep telnet
ii  telnet                         0.17-36                      amd64        The telnet client
Run Code Online (Sandbox Code Playgroud)

脚本的输出(像这样连接:)telnet localhost是:

waiting for a client to connect...
got a …
Run Code Online (Sandbox Code Playgroud)

debian telnet php5

6
推荐指数
2
解决办法
1592
查看次数

在双显示器上校准触摸屏(一键式一键式)

我使用的是 Debian 9。我有一台带有 2 个内置显示器的小型 PC,我打算将其用作销售点。它有一个面向顾客的显示器(非触摸屏)和一个面向收银员的显示器(触摸屏)。每台显示器的分辨率为 1366 x 768。我有一个 POS 应用程序,它作为唯一的 x 客户端运行 - 不存在窗口管理器和桌面管理器。这样系统消耗的资源最少。即我可以像这样从终端运行它:

xinit my-pos-app $* -- :1
Run Code Online (Sandbox Code Playgroud)

只要我使用鼠标,应用程序就可以正常运行。然而,目的是让这项工作仅使用触摸屏。

问题是触摸屏没有校准。我可以看到,当我触摸它时,我触摸的位置右侧大约 10 厘米处的一个点实际上正在被激活。所以我尝试使用xinput_calibrator- 一个程序,它会显示一个 gui 显示屏幕上的点来触摸并自动校准触摸屏。但是按照目前的设置,这一步是不可能完成的。这是因为只有一个显示器是触摸屏,而另一台显示器不是,但xinput_calibrator不知道这一点,它在每台显示器上放置了一半的图片。非触摸屏显示器上的校准点显然无法触摸,因此我无法完成该xinput_calibrator过程。

当我将鼠标移到第一台显示器的右侧时,我注意到它出现在第二台显示器的左侧。因此,该系统似乎并排放置了两个显示器。我不太了解这个低级监视器配置的东西,但是从 的输出来看xrandr,系统似乎认为它只有 1 个显示:

$ xrandr
Screen 0: minimum 320 x 200, current 2732 x 768, maximum 8192 x 8192
eDP-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm
x 193mm
1366x768  60.00*+  40.00
1360x768  59.80    59.96
1024x768  60.04    60.00
960x720 …
Run Code Online (Sandbox Code Playgroud)

x11 xrandr touch-screen xinput

5
推荐指数
1
解决办法
5053
查看次数

证据打开很慢

自从我更新了 debian 以来,evince启动速度一直很慢 - 大约需要半分钟。打开后,一切正常,就是打开速度慢。过去从来没有花那么长时间——过去只需要几秒钟。我怎样才能让它再次快速运转?

$ uname -a
Linux mypc 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我注意到它evince在以下行挂了大约半分钟:

$ strace evince
...
eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK)   = 11                                    
write(11, "\1\0\0\0\0\0\0\0", 8)        = 8                                     
write(10, "\1\0\0\0\0\0\0\0", 8)        = 8                                     
futex(0x562f5b8ffac0, FUTEX_WAKE_PRIVATE, 1) = 1                                
futex(0x562f5b909b30, FUTEX_WAKE_PRIVATE, 1) = 1                                
futex(0x562f5b8bd158, FUTEX_WAKE_PRIVATE, 1) = 1                                
poll([{fd=11, events=POLLIN}], 1, 25000) = 1 ([{fd=11, revents=POLLIN}])        
read(11, "\1\0\0\0\0\0\0\0", 16)        = 8                                     
poll([{fd=11, events=POLLIN}], 1, 25000) = 0 (Timeout) # <- hanging here …
Run Code Online (Sandbox Code Playgroud)

debian evince startx xinit

5
推荐指数
0
解决办法
1226
查看次数

如何在函数中使用 sudo?

我编写了一个函数,它的作用与tee日期戳类似,但也预先设置了日期戳。一切正常,除非我想输出到一个只有 root 可写的文件(在我的例子中是一个日志文件/var/log)。我已经简化了以下代码片段以仅包含不起作用的位:

#!/bin/bash
#script ~/test_logger.sh
logfile=/var/log/test.log
logger()
{
    while read data
    do
        echo $data >> $logfile
    done
    return 0
}
sudo ls ~ | logger
Run Code Online (Sandbox Code Playgroud)

如果我像这样运行整个脚本,它工作正常,sudo ~/test_logger.sh但我不能总是这样做,因为我想在~/.bash_logout自动运行的文件中使用记录器功能。我试过sudo在 while 循环中把 echo放在前面,但这不起作用。有任何想法吗?

bash sudo function

3
推荐指数
2
解决办法
4304
查看次数