Unix & Linux

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

4
如何将最后一个命令保存到文件?
当我使用bash shell运行分析时,我经常想将已经使用好的命令保存到同一目录下的文件中(称为“ LOGBOOK”),以便检查我确实得到了那些结果。到目前为止,这意味着我要么从终端复制。粘贴命令,要么按“向上”将命令修改为echo"my command" >> LOGBOOK或其他类似的滑稽动作。 我前history几天发现有一个工具,但是我找不到一种使用它来获取先前执行的命令的方法,因此我可以执行getlast >> LOGBOOK。 有没有一个很好的简单方法来做到这一点。或者,其他人如何处理保存命令以获取其结果呢?

6
Web浏览器输入字段上的Vim界面?
我正在寻找一个浏览器插件,该插件使用与Vim文本编辑器相同的键盘界面输入输入框的textin。我采用了Vimium,它使常规导航更加有效,但是我经常希望自己在选择输入字段时拥有Vim界面(例如,在创建此帖子时)。我非常希望能够以与使用vim文本编辑器编辑文件相同的方式来导航文本,并且我很好奇是否存在这样的插件吗?
29 vim  browser  chrome 


4
有没有一种方法可以锁定命令行?
例如,在X会话,我可以使用Ctrl- Alt- L锁屏,所以它会要求输入密码来解锁,并防止有人从我的电脑搞乱。 但是,如果我在一个有开放终端会话的tty的(我可以访问Ctrl- - Alt,F1例如) -那么它没有被锁定,有人仍然可以用它做一些伤害。有没有一种方法可以“锁定”该命令行(可能在其中运行一些后台进程)?

5
为什么几乎每个程序都抱怨我的语言环境?
我使用的是Arch Linux,并且已按照Wiki上有关设置语言环境的说明进行操作。 几乎每个运行的程序都抱怨语言环境-甚至locale。看起来像这样: % locale locale: Cannot set LC_ALL to default locale: No such file or directory LANG= LC_CTYPE=en_US.UTF-8 LC_NUMERIC=en-US LC_TIME=en-US LC_COLLATE="POSIX" LC_MONETARY=en-US LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT=en-US LC_IDENTIFICATION="POSIX" LC_ALL= 要么: % perl perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), …

10
用于登录SSH服务器的Shell脚本
我尝试编写一个shell脚本,该脚本可以使用脚本中提到的密码自动登录ssh服务器。我写了以下代码: set timeout 30 /usr/bin/ssh -p 8484 root@172.31.72.103 expect { "root@172.31.72.103's password" { send "password\r" } } 此代码无法正常运行,但仍在要求输入密码。有人可以帮我解决这个问题吗
29 ssh  password  expect 


1
如何为Linux设置每个进程的可交换性?
/proc/sys/vm/swappiness很好,但我希望每个过程都有一个类似的旋钮/proc/$PID/oom_adj。这样一来,与其他进程相比,我可以使某些进程调换其任何页面的可能性降低。与不同memlock(),这不会阻止程序被换出。就像一样nice,默认情况下,用户不能降低其程序的可能性,而只会使其更有可能被交换。我想我必须叫这个/proc/$PID/swappiness_adj。
29 linux  process  swap 


3
如何为应用程序保留端口?
如何为自定义应用程序保留端口列表? 具体来说,我正在创建的产品具有很多流程,并且它们之间有很多相互联系。 我遇到的问题是-操作系统偶尔会窃取我的端口。很少见,但确实如此。 这可能是因为其他应用程序使用了“ :: bind”,但未指定端口。 有时,当我使用未绑定的套接字调用“ :: connect”时,我自己的应用程序会盗用该端口。从手册页可以看出: 如果套接字尚未绑定到本地地址,则connect()应将其绑定到一个地址,除非该套接字的地址族为AF_UNIX,否则为未使用的本地地址。 所以我的问题是,我可以保留我需要的端口以便操作系统不使用它们吗?可以用/ etc / services完成吗?还是有其他方法?
29 tcp  udp  socket 


2
要求rsync删除接收方在发送方不存在的文件,但接收方例外
我已阅读以下主题: rsync --delete --files-from = list / dest /不会删除不需要的文件 通过rsync从dest目录中删除无关的文件? 但是,据我所知(也许我遗漏了一些东西),它们没有涵盖以下问题: 您如何要求rsync复制文件并删除发送方不存在的接收方文件(例外)?(例如.hg,即使在发送方没有存储库,也不要在接收方删除存储库)。 一种可能性? 从下面的@Richard Holloway的答案中借用。说我有以下几行: rsync -av --exclude=dont_delete_me --delete /sending/path /receiving/path 据我了解,此行将rsync删除接收路径上发送路径上不存在的所有内容,但与匹配的内容除外dont_delete_me。现在我的问题是:即使发送方没有匹配,rsync也会在接收方保留dont_delete_me 匹配的文件dont_delete_me吗?
29 rsync 

2
如何避免终端中的转义序列攻击?
阅读CVE-2009-4487的详细信息(这与日志文件中转义序列的危险有关)令我有些惊讶。 引用CVE-2009-4487: nginx 0.7.64将数据写入日志文件,而无需清除不可打印的字符,这可能允许远程攻击者通过包含终端仿真器转义序列的HTTP请求来修改窗口的标题,或者可能执行任意命令或覆盖文件。 显然,这并不是nginx中的安全漏洞,而是终端仿真器中的安全漏洞。 当然,可能cat只是偶然地将日志文件发送到终端,但是grep很常见。less也许可以清理转义序列,但是谁知道什么shell命令不会更改转义序列... 我倾向于同意Varnish的回复: 通常会定期询问终端响应转义的智慧,但是仍然没有一个主要的终端仿真程序适合丢弃这些序列,这可能是在与不再使用的1970's技术兼容的错误尝试。[..]从安全性的角度来看,与其责怪编写日志文件的所有程序,不如让终端仿真程序停止做愚蠢的事情,从而一次解决此问题和其他安全性问题,将更有效率。并为所有人。 因此,我的问题是: 如何保护我的xterm,使其不再能够通过转义序列执行命令或覆盖文件? X的哪些终端仿真器可以抵抗这种攻击?

9
如何使Firefox阅读标准输入
echo '<h1>hello, world</h1>' | firefox cat index.html | firefox 这些命令不起作用。 如果firefox可以读取stdin,则可以通过管道将html发送到firefox。 有可能使Firefox读取标准输入?
29 firefox 

2
捕获信号时中断系统调用
通过阅读read()和write()调用上的手册页,可以看出这些调用被信号打断了,而不管它们是否必须阻塞。 特别地,假设 进程为某些信号建立处理程序。 O_NONBLOCK 未设置(即以阻止模式运行)打开设备(例如,终端) 然后,该过程将进行read()系统调用以从设备读取数据,从而执行内核空间中的内核控制路径。 当程序read()在内核空间中执行时,先前安装了处理程序的信号将传递到该进程,并调用其信号处理程序。 阅读SUSv3“系统接口卷(XSH)”中的手册页和相应部分,您会发现: 一世。如果a read()在读取任何数据之前被信号打断(即由于没有可用数据而不得不阻塞),则它将返回-1并将其errno设置为[EINTR]。 ii。如果a read()在成功读取某些数据后被信号中断(即可以立即开始处理请求),则它将返回读取的字节数。 问题A): 我是否正确地假设在任何一种情况下(块/无块)信号的传递和处理对信号都不完全透明read()? 案例一 这似乎是可以理解的,因为阻塞read()通常会将进程置于TASK_INTERRUPTIBLE状态,以便在传递信号时,内核会将进程置于TASK_RUNNING状态。 但是,当read()不需要阻塞(情况ii。)并在内核空间中处理请求时,我会认为信号的到达及其处理将是透明的,就像硬件的到达和正确处理一样中断会。特别是,我会假设在传递信号后,该过程将被暂时置于用户模式下以执行其信号处理程序,然后该信号处理程序将最终返回该用户处理程序,以完成对中断read()(在内核空间中)的处理,从而read()运行其直到完成为止,然后过程返回到调用read()(在用户空间中)之后的点,结果将读取所有可用字节。 但是ii。似乎暗示read()中断了,因为数据立即可用,但是它返回时仅返回部分数据(而不是全部)。 这使我想到了第二个(也是最后一个)问题: 问题B): 如果我在A)下的假设是正确的,那么read()即使不需要阻塞,因为有可用的数据可以立即满足请求,为什么会被中断?换句话说,为什么read()在执行信号处理程序后不能恢复,最终导致所有可用数据(毕竟是可用的)被返回?

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.