Unix & Linux

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

5
线轴对打印意味着什么?
马克为我写了一则评论 我不知道如何使杯子不假脱机,即如何使lpr命令仅在打印机驱动程序运行后退出。 打印“假脱机”是什么意思? Google说这是一个动词,意思是“发送(用于在外围设备上进行打印或处理的数据)到中间商店”。例如,通过lpr命令打印时,打印后台处理程序代表的中间存储是什么? 马克似乎将假脱机的含义与阻塞联系起来。但是我无法通过查看Google给出的定义来解决这个问题。 谢谢。
18 printing  cups  lpr 


1
目录列表未完全排序
我在Debian Linux系统上有以下目录清单。但是,奇怪的是,文件populate.sql似乎没有与其余文件一起排序。 -rw-r--r-- 1 user1 user1 10004 Jul 28 13:16 populate2.sql -rw-r--r-- 1 user1 user1 10244 Jul 28 13:16 populate3.sql -rw-r--r-- 1 user1 user1 10359 Jul 28 13:16 populate4.sql -rw-r--r-- 1 user1 user1 11618 Jul 28 13:16 populate5.sql -rw-r--r-- 1 user1 user1 11654 Jul 28 13:17 populate6.sql -rw-r--r-- 1 user1 …

3
fakeroot在Linux中如何不违反安全性?
在阅读了这个问题的一些不错的答案之后,我仍然不清楚为什么您要假装自己是root而没有获得实际root的任何好处。 到目前为止,我可以收集到的是,fakeroot用于为文件解压缩/压缩后需要root的所有权。我的问题是,为什么您不能只用chown呢? 此处的Google网上论坛讨论指出,您需要用fakeroot来编译Debian内核(如果您想从非特权用户那里进行编译)。我的评论是,需要root用户才能进行编译的原因可能是未为其他用户设置读取权限。如果是这样的话,fakeroot允许编译是否违反安全规定(这意味着gcc现在可以读取用于root的文件了)? 这个答案在这里介绍了实际的系统调用与真实用户的UID / GID做,所以又在哪里呢fakeroot的帮助? fakeroot如何阻止Linux上不必要的特权升级?如果fakeroot可以欺骗tar来创建root拥有的文件,那么为什么不对SUID做类似的事情? 根据我的收集,当您想要更改构建为root的任何软件包文件的所有者时,fakeroot才有用。但是您可以使用chown做到这一点,所以我对应该如何使用此组件的理解还不够呢?
18 linux  chown  fakeroot 

5
如何仅获取端口3000上运行的进程的PID,而没有任何其他信息?
我正在使用CentOS7。我想获取在端口3000上运行的进程的PID(如果存在)。我想要获取此PID的目的是将其保存到Shell脚本中的变量中。到目前为止,我有 [rails@server proddir]$ sudo ss -lptn 'sport = :3000' State Recv-Q Send-Q Local Address:Port Peer Address:Port Cannot open netlink socket: Protocol not supported LISTEN 0 0 *:3000 *:* users:(("ruby",pid=4861,fd=7),("ruby",pid=4857,fd=7),("ruby",pid=4855,fd=7),("ruby",pid=4851,fd=7),("ruby",pid=4843,fd=7)) 但是我无法弄清楚如何在没有所有这些额外信息的情况下单独隔离PID。

5
屏幕或类似屏幕,用于自动恢复不稳定的ssh连接
我经常不得不在不可靠的wifi环境中通过ssh连接到服务器。在服务器上,我运行屏幕,因此,如果断开连接,我可以重新连接并恢复屏幕会话,并从中断的地方继续接听,但是失去连接仍然是一个主要的时间浪费:如果在我连接断开时在服务器上,终端窗口趋于冻结。我必须杀死该选项卡,打开一个新选项卡,再次SSH到服务器并恢复屏幕会话。我已经在服务器上运行屏幕并在本地屏幕上尝试过此操作。无论哪种方式,当连接断开时,它都倾向于冻结。 有什么办法可以使我拥有与屏幕类似的东西,或者屏幕本身,它们将自动尝试重新连接并保持会话运行,因此我不必保持手动重新连接?通常,当我失去连接时,我认为这只是一个很短的时间-可能不到一秒钟。 我正在使用Ubuntu 14.04 LTS MATE版。谢谢


1
bash根据“ IFS”变量的值更改其行为
当我将IFS变量设置为一个空格时,bash将多个空格视为一个空格(这myprogram是一个打印收到的命令行参数的程序): IFS=" " x="hello hi world" ./myprogram $x argv[1] = hello argv[2] = hi argv[3] = world 但是,当我将IFS变量设置为逗号时,bash不要将多个逗号视为一个逗号: IFS="," x="hello,,,hi,,,world" ./myprogram $x argv[1] = hello argv[2] = argv[3] = argv[4] = hi argv[5] = argv[6] = argv[7] = world 这是为什么?
18 bash  shell 

4
“运行任何将不可信数据传递给将参数解释为命令的命令的命令”
从findutils的手册中: 例如这两个命令的构造 # risky find -exec sh -c "something {}" \; find -execdir sh -c "something {}" \; 非常危险 这样做的原因是将'{}'扩展为一个文件名,该文件名可能包含分号或外壳程序专用的其他字符。例如,如果有人创建了文件, /tmp/foo; rm -rf $HOME则上面的两个命令可能会删除某人的主目录。 因此,由于这个原因,请勿运行任何将不可信数据(例如文件名)传递给将参数解释为要进一步解释的命令的命令(例如“ sh”)的命令。 对于shell,有一个解决此问题的聪明方法: # safer find -exec sh -c 'something "$@"' sh {} \; find -execdir sh -c 'something "$@"' sh {} \; 这种方法不能保证避免所有问题,但是比将攻击者选择的数据替换为shell命令的文本要安全得多。 问题的原因是否在于find -exec …
18 shell 

2
理解`echo $((0x63))`
我在寻找一种通过命令行转换十六进制的方法,发现有一个非常简单的方法echo $((0x63))。 效果很好,但是我对这里发生的事情有些困惑。 我知道$(...)通常是子外壳,其中的内容在外部命令之前进行评估。 在这种情况下它仍然是子外壳吗?我在想不是因为那意味着子shell只是在评估(0x63)这不是命令。 有人可以帮我分解命令吗?
18 bash 

3
Mac应用程序如何能够跟踪文件的位置?
我在Mac上观察到这样的行为: 使用PDF Expert打开PDF,对文件进行一些更改,在Finder中移动文件,将其保存在PDF Expert中,然后将其正确保存到新位置。 在目录中打开外壳程序,例如~/foo,将目录与另一个应用程序一起使用,外壳程序的pwd正确输出~/.Trash/foo。 到底发生了什么事?这些情况似乎表明应用程序不仅仅拥有emacs之类的文件的绝对路径(我对吗?),或者这是一种完全不同的机制?
18 files  filesystems  osx 

2
为什么此脚本在终端中起作用,但不能在文件中起作用?
我将这个shell脚本保存在一个文件中:它执行一些基本的字符串替换。 #!/bin/sh html_file=$1 echo "html_file = $html_file" substr=.pdf pdf_file="${html_file/.html/.pdf}" echo "pdf_file = $pdf_file" 如果我将其粘贴到命令行中,则可以正常工作: $ html_file="/home/max/for_pauld/test_no_base64.html" echo "html_file = $html_file" substr=.pdf pdf_file="${html_file/.html/.pdf}" echo "pdf_file = $pdf_file" 给 html_file = /home/max/for_pauld/test_no_base64.html pdf_file = /home/max/for_pauld/test_no_base64.pdf 那是上面echo的输出-它按预期工作。 但是,当我调用脚本时, $ saucer "/home/max/for_pauld/test_no_base64.html" 我得到以下输出: html_file = /home/max/for_pauld/test_no_base64.html /home/max/bin/saucer: 5: /home/max/bin/saucer: Bad substitution 我的脚本使用的是bash的其他版本还是其他版本?我需要更改我的shebang行吗?
18 bash  string 

3
为什么带引号的变量中的选项会失败,但不带引号的情况下会起作用?
我了解到我应该在bash中引用变量,例如“ $ foo”而不是$ foo。但是,在编写脚本时,我发现了一种情况,它不带引号但不带引号就可以工作: wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX recieved from command line relative_path="$3" # /XXX received from command line 这个作品: wget $wget_options --directory_prefix="$local_root" "$remote_root$relative_path" 这个不会(注意$ wget_options周围的双引号): wget "$wget_options" --directory_prefix="$local_root" "$remote_root$relative_path" 这是什么原因呢? 第一行是好的版本;还是我应该怀疑某个地方存在隐藏的错误导致此行为? 通常,在哪里可以找到好的文档来了解bash及其引用的工作原理?在编写此脚本期间,我觉得我开始在反复试验的基础上工作,而不是理解规则。


4
将/ bin内容移至/ usr / bin,可以撤消吗?
运行Ubuntu 17.04,我正在从非存储库发行版中安装软件,我应该将bin-folder内容移至/ usr / bin(这已经很不明智了) 那是那些日子之一,所以我做了什么: mv /bin/* /usr/bin 所以我搞砸了,我不小心将bin中的所有文件都移到了/ usr / bin,并且/ bin为空。由于我认为/ bin对系统至关重要,因此为了快速补救,我将/ usr / bin内容复制到/ bin。 现在,我的/ bin和/ usr / bin内容相同,并且都包含最初在/ bin和/ usr / bin中分开的文件。 我的Ubuntu现在处于损坏状态吗?(尚未尝试重新启动计算机,现在一切似乎仍然可以正常工作) 有没有办法知道最近将哪些文件移动/复制到了/ usr / bin,所以我可以手动处理这种情况?2.1 / bin和/ usr / bin中通常有重叠的文件 还有其他方法可以撤消我的工作吗? 我没有安装Timeshift,因此不能选择恢复备份,但是当前计算机上没有任何关键操作,因此我可以承认重新安装整个linux分区是不合法的。
18 linux  ubuntu  mv 

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.