Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答


4
如何使用Vim编辑网络上的文件?
目前,我正在通过SSH进入服务器并在服务器上执行Vim的方式来实现。这样做的好处是,不必处理通过SCP从远程服务器打开文件的繁琐语法,并且更重要的是,能够真正快速浏览服务器的文件系统。另一方面,它有滞后性,这使得编辑有点困难。 编辑大量远程文件的规范方法是什么?
13 networking  files  vim 

4
管道,{列表;}仅适用于某些程序
对于此类不可预测的行为,需要高级用户的解释: ps -eF | { head -n 1;grep worker; } UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 441 2 0 0 0 2 paź15 ? 00:00:00 [kworker/2:1H] 一切看起来都不错,而 ls -la / | { head -n 1;grep sbin; } 仅显示来自的输出 head ...我想过stdout 2>&1,对我也不起作用,这很奇怪,没有任何解释或建议如何处理?
13 shell  pipe 

2
在控制台进行导览?
我认为,这将真正使您受益于仅典型的Linux文件系统(我意识到系统之间会有所不同)的导览,或者文件系统和通用控制台生产力模式以及其他所有内容的导览! 假设您是gnu Linux的新手,并且坐在控制台上,然后键入 guided-tour 然后,就像在越来越多的新语言和框架主页上显示的交互式REPL辅助编程教程一样,您将被引导通过文件系统,运行的地方和常见的控制台任务。例如,以下虚构的会话片段: #Please cd to /tmp $ cd /tmp #This is a place to store stuff that is just for currently running programs, using the handy filesystem. Now try creating a file here. $ nano myfile ....etc... 是否已经存在与此类似的远程内容,您看到上诉了吗?
13 learning 

4
管理SSH密钥的建议
您发现管理大量SSH密钥对的最佳实践是什么? 我使用SSH连接到在家和工作中的多个系统。我目前有一个相当小的,可管理的工作和家庭系统密钥对集合。我有一个生成命名密钥对的脚本,因此可以避免混淆。 我的家庭网络由我的笔记本电脑(ubuntu),两个台式机(ubuntu / fedora双启动,fedora / windows双启动)和一个媒体系统(ubuntu)组成。在工作中,我有个人笔记本电脑(用于在家工作),台式机(fedora),生产系统(RHEL)以及带窗口(叹气)和VM(fedora)的笔记本电脑。到目前为止一切都很好。 (我对将家庭密钥对放置在工作系统上或将工作密钥对放置在家庭系统上都没有兴趣。而且我们拥有虚拟用户帐户,可以与其他系统机械化文件传输,而其他系统则必须将私钥驻留在生产机器上,在其他系统之间传输文件。) 但是现在出现了Hadoop,它是一个由100多个系统组成的大型集群,具有更高的复杂性,更多的用户和更多的密钥对。现在,我需要管理密钥。 (我需要澄清。我是一名软件开发人员,向正在部署Hadoop集群的客户端进行咨询。他们需要管理密钥。会有很多人访问该集群,需要将其公共密钥放置在系统上。作为居民Linux专家,他们向我寻求帮助。我建议聘请系统管理员,但直到他们这样做之前,我都会提供帮助) 当我需要将公钥发布到远程系统时,所有“操作方法”网页都建议覆盖(>)(销毁现有密钥)或追加(>>)(这很好,保留现有密钥) 。但是我认为将每个公用密钥分别保存在目标计算机上,并将它们组合在一起会更好。我正在寻找建议。 您发现管理大量密钥的最佳实践是什么? 谢谢! 编辑:一方面需要将密钥放置在许多系统上,同时还要为特定用户提供CRUD(创建,读取,更新,删除/禁用),这意味着需要能够识别哪些密钥属于哪些用户。
13 ssh  scripting 

2
使用wget下载时会忽略“其他”域吗?
我想抓取www.website.com/XYZ下的链接,而仅下载www.website.com/ABC下的链接。 我正在使用以下wget命令来获取所需的文件: wget -I ABC -r -e robots=off --wait 0.25 http://www.website.com/XYZ 当我使用wget 1.13.4时,这完美地工作。但是问题是我必须在具有wget 1.11的服务器上使用此命令,并且当我使用同一命令时,它最终会下载其他域,例如: www.website.de www.website.it ... 如何避免这个问题?我尝试使用 --exclude domains=www.website.de,www.website.it 但是它一直在下载这些域。 还要注意,我无法使用,--no-parent因为我想要的文件位于较高级别(我希望通过抓取website.com/XYZ下的链接来获取website.com/ABC下的文件)。 有什么提示吗?

1
如何告诉须藤重复一次演讲?
我让我的一个编码伙伴可以访问我的Raspberry Pi,并且在设置好一切之后,我以sudo的身份对其进行了测试。 它给了我“演讲”: 我们相信您已经从本地系统 管理员那里获得了常规讲座。通常可以归结为以下三点: #1)尊重他人的隐私。 #2)在打字之前要三思。 #3)强大的力量带来巨大的责任。 我想知道的是如何告诉sudo重复一次。我找不到它存储“警告用户”列表的位置,我也不想太夸张地告诉它每次都提供“演讲”。
13 sudo  users 

2
守护程序(即后台)进程是否可以从USB键盘查找按键?
我正在从事一个嵌入式Linux项目,在该项目中,我将开发一个程序,该程序将在启动时自动运行,并通过字符显示和某种按钮阵列与用户进行交互。如果我们使用简单的GPIO按钮阵列,我可以轻松编写程序来查找这些GPIO线上的按键。但是,我们的想法之一是使用USB数字键盘设备代替用户输入。我的理解是,这些设备将以USB键盘的形式呈现给操作系统。如果沿着这条路走,我的程序有一种方法可以从Linux内部在此USB键盘上寻找输入,请记住没有虚拟终端或VGA显示。插入USB键盘后,“ / dev”中是否有一个实体可以为我打开文件描述符?
13 linux  usb  keyboard  embedded 

2
在zsh中取消完成,但仅完成
当完成功能需要很长时间时,我可以通过按Ctrl+ C(终端中断键,发送SIGINT)或Ctrl+ G(绑定到send-break)来中断它。然后,我留下未完成的单词。 但是,如果我恰好在完成功能完成时按Ctrl+ C或Ctrl+ G,则按键可能会取消命令行并给我一个新的提示,而不是取消完成。 如何设置zsh,以便某个键将取消正在进行的完成,但是如果没有完成功能处于活动状态,则什么也不做?

3
我应该在用户目录的哪里安装手册页?
我试图为我写的一个小的Perl实用程序创建一个Makefile,并且我正在努力寻找一种方法来找到以非root用户make身份运行我的手册页的位置。 我目前正在解析输出,manpath以查找$HOME目录中的第一个路径……并且它几乎可以正常工作。 我找到的路径是~/man和~/share/man 唯一的问题是,如果这些目录最初不存在,manpath则不会输出任何目录。 问题 有没有一种便携式的方法来找出我应该在用户的$ HOME目录中安装手册页的位置? 如果不是,应该选择其中之一?
13 man 

4
自动完成最新文件
我有一个创建文本文件的过程,该文件的文件名基于其创建时间的时间戳: $ ls 1378971222.txt 1378971254.txt 1378971482.txt 1378971488.txt 1378972089.txt 1378972140.txt 1378972141.txt 1378972153.txt 1378972155.txt 1378972241.txt 如何自动完成最新创建的文件的文件名,即具有最新mtime的文件?无法对这些文件使用制表符补全,因为文件名中的几乎每个字符都与另一个文件共享。我希望找到一个快捷方式(例如Alt .自动完成last命令的最后一个参数的快捷方式)。我已成功地炮制以下别名这是伟大的VIM,但我很想知道,如果一个通用的快捷方式存在,我可以用用kde-open,sqlite3和其他应用程序。 alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"

3
Linux如何加载“ initrd”映像?
我一直在尝试了解引导过程,但是我头顶上只有一件事。 一旦启动Linux内核并安装了根文件系统(/),就可以运行程序并可以集成其他内核模块以提供其他功能。要挂载根文件系统,必须满足某些条件。内核需要相应的驱动程序来访问根文件系统所在的设备(特别是SCSI驱动程序)。内核还必须包含读取文件系统所需的代码(ext2,reiserfs,romfs等)。还可以想到,根文件系统已被加密。在这种情况下,需要密码来挂载文件系统。 初始ramdisk(也称为initdisk或initrd)精确地解决了上述问题。Linux内核提供了一个选项,即将小型文件系统加载到RAM磁盘,然后在安装实际的根文件系统之前在其中运行程序。initrd的加载由引导加载程序(GRUB,LILO等)处理。引导加载程序仅需要BIOS例程即可从引导介质加载数据。如果引导加载程序能够加载内核,则它也可以加载初始虚拟磁盘。不需要特殊的驱动程序。 如果/ boot不是一个不同的分区,而是/分区中的分区,那么引导加载程序是否不要求SCSI驱动程序访问“ initrd”映像和内核映像?如果您可以直接访问图像,那么为什么我们确实需要SCSI驱动程序?
13 linux  kernel  boot  initrd 

2
如何知道ssh使用的对称加密类型?
我想知道ssh在连接客户端-服务器中使用的对称加密(身份验证之后)的类型。我不确定谁来决定加密。客户端还是服务器? 我已经看过/etc/ssh/ssh_config(在客户端上)和/etc/ssh/sshd_config(在服务器上),什么也没有。

5
带有glob模式的cp隐藏文件
情况: $ mkdir foo && touch foo/.test $ cp foo/* . zsh: no matches found: foo/* (or bash : cp: cannot stat ‘foo/*’: No such file or directory) 我的目录充满了隐藏的文件夹和文件。发生了什么,解决方案是什么?
13 zsh  wildcards  cp  dot-files 

3
通知和通知守护程序在窗口管理器上不起作用
通知在Linux独立窗口管理器(Openbox,Awesome WM等)上不起作用。我尝试安装notification-daemon和dunst,但使用发送notify-send "something"并没有弹出任何窗口。 我试图运行polkit-gnome-agent并直接运行通知守护程序,但是它没有帮助(前一阵子我以这种方式解决了类似的问题,但现在它什么都不做)。 除非我使用python发送琐碎的通知,否则没有任何错误迹象,然后我只会得到模糊的错误消息: File "/usr/lib/python3.3/site-packages/gi/types.py", line 113, in function return info.invoke(*args, **kwargs) gi._glib.GError: Could not connect: Connection refused 琐碎的C程序什么也不输出(例如,没有错误)。 我正在将Archlinux与systemd和d-bus一起使用,我怀疑这是polkit或某种守护程序未在窗口管理器启动上运行的问题,但不知道该怎么办,或者如何获得更有意义的错误消息。 编辑:我从那里获取示例代码:https : //wiki.archlinux.org/index.php/Libnotify#Python Dbus应该正在运行,因为systemd将其作为依赖项。我已经libnotify安装了-它是提供的软件包notify-send。另外,通知守护程序还应通过以下桌面文件根据需要启动(仅在到达通知时)/usr/share/dbus-1/services/org.freedesktop.Notifications.service: [D-BUS Service] Name=org.freedesktop.Notifications Exec=/usr/bin/dunst 我什至尝试直接运行守护程序(只是执行)并尝试发送通知。如果有人知道如何获取更多信息,请随时提出建议。 编辑2:我试图运行使用sudo通知守护程序:sudo notification-daemon_name &(对我来说sudo dunst &)和sudo notify-send something,然后通知的作品。但是,当我尝试以非特权用户身份执行之前的任何操作(这对于大多数程序以非特权用户身份发送通知很重要)时,什么都没有显示。 notification-daemon 拒绝工作而没有任何错误或警告。 编辑3:显然是权限问题:没有root访问权限,我无法发送通知。干净重启后:sudo notify-send "something"即使没有手动启动任何守护程序也可以工作,但是我(和我启动的程序)应该如何做才能在没有root特权的情况下发送通知,这在Gnome或任何其他完整桌面环境中是可能的?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.