Unix & Linux

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

2
使用文本编辑器编辑的sudoers文件-现在无法运行sudo
我现在知道我永远不要尝试etc/sudoers使用常规文本编辑器来编辑文件。但是,在了解这一点之前,我用Sublime Text在文件中保存了一个新的用户名。现在以我sudo cat sudoers为例,出现以下错误: >>> /etc/sudoers: syntax error near line 1 <<< sudo: parse error in /etc/sudoers near line 1 sudo: no valid sudoers sources found, quitting 我如何摆脱这种困境?
9 osx  sudo 

1
cfdisk还是fdisk?
在阅读手册页时,fdisk我遇到了以下有趣的文字: 周围有几个* fdisk程序。每个都有其问题和优点。按照cfdisk,fdisk,sfdisk的顺序尝试。(实际上,cfdi​​sk是一个漂亮的程序,它对接受的分区表有严格的要求,并生成高质量的分区表。如果可以的话,请使用它。fdisk是一个执行模糊操作的错误程序-通常碰巧会产生合理的结果。结果是它的唯一优点是它对BSD磁盘标签和其他非DOS分区表提供了一定的支持,如果可以,请尽量避免使用sfdisk仅适用于黑客-用户界面很糟糕,但比fdisk和比fdisk和cfdisk更强大。此外,它可以非交互地使用。) 我注意到两个应用程序的选项格式不同: - melancholy():/$ 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): 4096 bytes / 4096 bytes …

1
如何更改TTY显示在哪个监视器上?
当我启动或按时CtrlAltF*,我将被带到物理终端/ TTY。问题是TTY出现在我的HDMI监视器上,而实际上它与我不在同一个房间。 是否可以配置PC在DisplayPort监视器上显示TTY?澄清一下,当我按时CtrlAltF1,我希望TTY显示在我的DisplayPort显示器上,而不是我的HDMI显示器上。 编辑:经过更多的挖掘后,看来引导加载程序可能涉及到这里,所以我应该指定我正在使用GRUB 2.02〜beta2-20

2
如何得知我正在使用哪个设备树Blob(DTB文件)?
我正在使用TS-4900,这是一种插入到基板的嵌入式“模块计算机”,运行Yocto Linux。它使用U-Boot启动,并据推测基于底板的模型,它选择了正确的dtb文件来启动,并且如果它找不到正确的文件,它可能会退回到我模块的“通用”文件。 但是,它如何/在哪里确定合适的呢?如何得知使用了哪个.dtb或设置了应该使用哪个.dtb? 以下是U-Boot的启动消息。 U-Boot 2014.10-g3ac6ec3 (Jan 29 2015 - 17:20:15) CPU: Freescale i.MX6SOLO rev1.1 at 792 MHz Reset cause: POR Board: TS-4900 Revision: C Watchdog enabled I2C: ready DRAM: 1 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 SF: Detected N25Q64 with page size 256 Bytes, erase size 4 KiB, total …

1
ssh-agent缺少类似于sudo的不活动/空闲超时功能是否有技术原因?
ssh-agent -t在[1]上对现有功能进行了简短的讨论,早在2001年就有一篇关于debian-devel [2]的帖子,希望提供不活动超时功能。SE [3]上针对选美也有类似的讨论。 我想知道地球上的其他地方如何保护ssh密钥-我是否错过了一些明显的东西,而这对于我来说却是一个痛苦点,而且显然没有其他人吗?具体来说,我在考虑脚本化的ssh交互,例如与ansible的交互。今天看来,您的选择是: 例如,将代理中密钥的有效期设置为令人担忧的长时间。1h或您的脚本的最大运行时间可能是(我怀疑很多人都允许他们的sudo re-auth超时延长这么长的时间!)-但是seahorse/ gnome-keyring-daemon几乎不支持这么多[4] 长时间运行脚本,并每5/10/15分钟重新输入一次密码:现在您可以轻松地看到每天输入20次密码 破解您自己的自制解决方案以模仿此缺少的功能,也许与您的Shell的TMOUTShell var 结合使用(感谢freenode #openssh IRC上的人员的建议) 根本没有设置密钥生存期,即您的代理会永久加载您的密钥,或者直到您杀死/重新启动它为止 如果您对身份验证所使用的每种角色使用简短的ssh代理超时,强密码短语和不同的密钥文件,那么这一天会非常令人沮丧! 我已经尝试了gpgkey2ssh和智能卡,但这并不能真正解决这个特定问题:我仍然想要ssh-agent功能,并且我不想每隔5分钟重新进行身份验证只是为了防止我的私钥暴露我的计算机空闲时在内存中存储。 我做错了吗? [1] 配置SSH代理的默认超时 [2] https://lists.debian.org/debian-devel/2001/09/msg00851.html [3] /server/518312/putty-pageant-forget-keys-after-period-of-inactivity [4] https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/129231

2
bash如何对待“>>()”
在尝试输出重定向和进程替换时,我偶然发现了以下命令及其结果输出: me @ elem:〜$ echo foo>>(cat); 回声条 酒吧 me @ elem:〜$ foo (是的,最后的空换行是有意的。) 因此,bash echo的栏会显示我通常的提示,echo的foo,echo的换行符,然后将光标留在那里。如果再次按下Enter键,它将在新行上打印提示,并将光标留在它的后面(按预期,当有人在空命令行上按下Enter键时)。 我期望它将foo写入文件描述符,cat读取它并回显foo,第二个回显回显的栏,然后返回命令提示符。但这显然不是事实。 有人可以解释发生了什么吗?

2
删除文件名中的换行符
我有一个PHP代码,该文件生成wget将在其上附加日志的文件名。我生成了2000多个文件,但是问题是我在使用它们时遇到了麻烦,因为我错误地将PHP_EOL其名称添加为该名称的一部分,该代码将LF/line feed/%0A以其名称添加 此类文件名的示例(通过浏览器访问时,放在/ var / www / html上)请http://xxxx/wget_01_a%0a.txt注意%0a扩展名之前的 我搞砸了,我希望有一个重命名批处理可以搜索所有文件,如果找到line feed它,它将在没有换行的情况下对其进行重命名,因此它将是http://xxxx/wget_01_a.txt 我不太确定如何处理该问题,因为看起来像当我ls在腻子上所有不限于该多余字符的特殊字符都变成时?,我只希望针对的是换行符。

2
Shell命令/脚本,看主机是否还活着?
我试图找出更多方法来查看给定主机是否正常运行,仅使用shell命令(主要是bash)即可。理想情况下,它将能够同时使用主机名和IP地址。现在,我知道的唯一本地方法是ping,也许可以将其集成到此处描述的脚本中。还有其他想法吗?

5
非交互式脚本中的sudo
我有一个执行三个功能的脚本:A && B && C。 功能B需要运行一个超级用户,而A并C没有。 我有几种解决方案,但都不令人满意: sudo整个脚本: sudo 'A && B && C' 如果不需要A,C以超级用户身份运行似乎是个坏主意 使脚本具有交互性: A && sudo B && C 我可能必须输入密码,但是我希望脚本是非交互式的,因为每个功能可能要花一些时间,并且我不希望脚本等待我。好吧,这也是为什么它首先是脚本的原因,所以我不必看着它运行。 愚蠢的解决方案: sudo : && A && sudo -n B && C 首先,先执行无操作操作似乎很愚蠢sudo,而且我还必须交叉指责A不会花更多的钱$sudo_timeout。 假设的解决方案(希望您告诉我它的存在): sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B && C' 这会在一开始提示您输入密码,然后仅在需要时使用该凭据。 您对这一切有何看法?对于这个问题没有解决方案,我感到非常惊讶,因为我认为这是一个非常普遍的问题(关于make all && sudo …


2
识别使用不同逻辑扇区大小创建的GPT分区表
我有一个3TB驱动器,已使用GPT对其进行了分区: $ sudo sgdisk -p /dev/sdg Disk /dev/sdg: 5860533168 sectors, 2.7 TiB Logical sector size: 512 bytes Disk identifier (GUID): 2BC92531-AFE3-407F-AC81-ACB0CDF41295 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 5860533134 Partitions will be aligned on 2048-sector boundaries Total free space is 2932 …
9 kernel  partition  disk  gpt 

1
'setcap'覆盖最后的功能。如何设置多种功能?
我想让node.js能够侦听端口80并关闭计算机。最初,我依次尝试了以下两个命令: setcap cap_net_bind_service=+ep /usr/bin/nodejs setcap cap_sys_boot=+ep /usr/bin/nodejs 然后我的应用程序无法绑定到端口80。我使用getcap进行了检查: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep 如果我再次为cap_net_bind_service运行setcap: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_net_bind_service+ep 我没有在手册页http://linux.die.net/man/8/setcap中看到任何有关设置多种功能的信息,并尝试了一些绝望的事情: # setcap cap_net_bind_service=+ep /usr/bin/nodejs cap_sys_boot=+ep /usr/bin/nodejs # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep # setcap cap_net_bind_service=+ep cap_sys_boot=+ep /usr/bin/nodejs Failed to set capabilities on file `cap_sys_boot=+ep' (No such file or …

4
sed替代搜索和替换很长的行
我有一个程序生成的文件,该文件未在记录的末尾添加换行符。我想在记录之间添加换行符,我可以使用一个简单的sed脚本来做到这一点: sed -e 's/}{/}\n{/g' 问题在于输入文件的大小为数GB,因此sed的输入行的长度为数GB。sed尝试在内存中保留一行,在这种情况下不起作用。我尝试了该--unbuffered选项,但这似乎会使它变慢,并且无法正确完成。
9 sed 

2
自动将声音输出设备切换到蓝牙耳机,并在连接时强制切换到A2DP配置文件
在这里使用Mint 17 + MATE。我的蓝牙耳机(Plantronics Backbeat Go2)与我的系统连接良好,但是要使这项工作自动化,我需要采取一些手动步骤,我非常希望将其自动化: 每次重新启动后,我都必须在终端中运行pactl load-module module-bluetooth-discover才能使设备完全连接。我尝试将其放在外壳程序脚本中以在启动时运行,但没有骰子:( 我的耳机会自动连接,没有问题,但始终默认为Telephony Duplex(电话双工)甚至是Off(关闭),而不是A2DP。我尝试了几种不同的策略来强制A2DP失败:( 强制将BT耳机作为默认输出设备。这里也尝试了几种策略...不幸的是,每次我连接耳机时,pacmd的索引似乎都会改变,因此我不能以这种方式在PA conf文件set-default-sink中强制使用默认值。并且使用列出的名称似乎也不起作用-如果没有耳机,它将切换到扬声器,并且如果耳机已连接,则不会切换回:( 感谢您就解决这些问题提出的任何建议!

1
使用UUID引用整个磁盘(/ dev / sda)
在我的系统(Debian的),我可以看到UUID我所有的磁盘分区的标识符(即/dev/sda1,dev/sda2..) ls /dev/disk/by-uuid/ 但是,我看不到其自身的UUID标识符/dev/sda。是否可以引用整个磁盘UUID? 之所以需要它,是因为我想引用一个特定的磁盘,并且我不能依靠它将被称为/dev/sda。 编辑 @don_crissti建议的解决方案很棒。但是,我希望同一型号/制造商的所有硬盘的UUID相同,而不是序列号唯一。 使用udevadm,我可以看到磁盘属性: udevadm info -n /dev/sda -a ATTRS{model}=="Samsung SSD 840 " ATTRS{vendor}=="0x8086" ATTRS{class}=="0x010700" ATTRS{device}=="0x1d6b" .... 我如何UUID从这些属性生成一个,以便相同的Model / Manufacturer磁盘具有相同的UUID?
9 udev  disk  fdisk  uuid 

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.