请比较以下两行:
-rws---r-x 1 root root 21872 2009-10-13 21:06 prg1
-rwx---r-x 1 root root 21872 2009-10-13 21:06 prg2
Run Code Online (Sandbox Code Playgroud)
上的 setuid 位prg1以及“其他”的读取和执行位是否意味着任何用户都可以使用 root 权限运行它?该 prg2也有读取和执行“其他”,但没有设置setuid位,这是否意味着它仍然可以通过任何用户,但没有root权限运行?
也许我今天还没有喝足够的咖啡,但我不记得或想不出任何理由为什么/proc/PID/cmdline应该让世界可读——毕竟不是/proc/PID/environ。
使其只能由用户(当然也可能是组和 root)读取可以防止作为命令行参数输入的密码被意外泄露。
当然,它会影响其他正在运行的用户ps等等htop- 但这是一件好事,对吧?这就是不让世界可读的关键所在。
我注意到很多问题、答案和评论都表示不屑(有时甚至害怕)编写脚本而不是单行代码。所以,我想知道:
我何时以及为什么应该编写独立脚本而不是“单行脚本”?或相反亦然?
两者的用例和优缺点是什么?
是否某些语言(例如 awk 或 perl)比其他语言(例如 python)更适合单行?如果是这样,为什么?
这只是个人喜好问题还是在特定情况下编写一个或另一个有很好的(即客观的)理由吗?这些原因是什么?
one-liner:直接键入或粘贴到 shell 命令行中的任何命令序列。常累及管道和/或使用的语言,如sed,awk,perl,和/或工具,如grep或cut或sort。
命令行上的直接执行是定义特征 - 长度和格式无关紧要。“一行”可能全部在一行上,也可能有多行(例如 sh for 循环,或嵌入的 awk 或 sed 代码,带有换行和缩进以提高可读性)。
script: 任何解释性语言中的任何命令序列,它们被保存到一个文件中,然后被执行。脚本可能完全用一种语言编写,也可能是使用其他语言的多个“单行”的外壳脚本包装器。
我有我自己的答案(稍后我会发布),但我希望这成为关于该主题的规范问答,而不仅仅是我的个人意见。
我正在尝试将一堆 PDF 编译成一个文档。ls显示文件位于我所在的目录中并且它们是可读的 ( -rw-r--r--)。但是当我尝试运行时pdftk 2017.pdf cat output test.pdf出现错误:
Error: Unexpected Exception in open_reader()
java.io.FileNotFoundException: 2017.pdf (Permission denied)
at gnu.java.nio.channels.FileChannelImpl.open(libgcj.so.16)
at gnu.java.nio.channels.FileChannelImpl.<init>(libgcj.so.16)
at gnu.java.nio.channels.FileChannelImpl.create(libgcj.so.16)
at java.io.RandomAccessFile.<init>(libgcj.so.16)
at pdftk.com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PRTokeniser.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
Error: Failed to open PDF file:
2017.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
Run Code Online (Sandbox Code Playgroud)
如果我向该操作添加更多文件,我只会收到每个文件的错误。
我可以从命令行重命名 PDF,但mv 2017.pdf foo.pdf出现相同的错误。Error: Unexpected Exception in open_reader()
java.io.FileNotFoundException: foo.pdf (Permission denied)
如果我尝试调用一个不存在的文件,例如。 pdftk 123.pdf cat output test.pdf …
新的pstate英特尔驱动程序让我很恼火,因为他们移除了旧的powersave调节器,让我可以设置最低可用的 CPU 频率,并在安静、寒冷的笔记本电脑中运行数小时或数天的数值模拟。更糟糕的是,他们现在所说powersave的基本上是旧的调速器ondemand,即 CPU 频率随着负载而上升的模式,并伴随着该死的风扇噪音:
由于这些策略在驱动程序中实现,因此它们与 cpufreq 缩放调控器实现不同,即使它们在 cpufreq sysfs (scaling_governors) 中具有相同的名称。例如,“性能”策略类似于 cpufreq(TM)“性能”调控器,但“powersave”与 cpufreq“powersave”调控器完全不同。这里的策略类似于 cpufreq "ondemand",其中请求的 P-State 与系统负载相关。
(摘自https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt)
现在,请问有没有其他方法可以将我的 CPU 频率保持在最低水平?这对我来说真的很重要。如果我最终无法设置恒定的最低 CPU 频率,我只是更喜欢将笔记本电脑通过窗户倾倒。这就是我使用笔记本电脑的方式,这就是我想要一台笔记本电脑的用途,而且我已经尝试实现这一目标好几天了!
我正在尝试这个,但它不起作用:
echo 42 | sudo dd of=/sys/devices/system/cpu/intel_pstate/max_pref_pct
Run Code Online (Sandbox Code Playgroud)
将最大速度设置为 42%,它没有任何影响,每当我做某事时,CPU 都会继续运行到 100%。我究竟做错了什么?(我应该重启一些服务还是什么?)
有没有办法得到这个?另外,非英特尔 CPU 允许我这样做吗?我不介意再买一台能解决问题的笔记本电脑。
我如何使用,最好是单个chmod命令,它允许任何用户在目录中创建文件,但只有文件的所有者(创建它的用户)可以删除他们自己的文件,但该目录中没有其他人。
我想使用:
chmod 755 directory
Run Code Online (Sandbox Code Playgroud)
由于用户可以创建文件并删除它,但不允许用户删除其他人的文件吗?
我只希望创建文件的人能够删除他们自己的文件。因此,任何人都可以创建文件,但只有创建文件的人才能删除该文件(在目录中)。
请注意,对于 VM 框,获取 rsyslogd 进程得到 HUPed 的日志。除了一些论坛上的一些帖子说这是为了logrorate之外,没有找到任何想法。任何想法如何解决/解决这个问题..
messages-20141011:2014-10-10T04:02:02.054134-06:00 udr-oradl01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.12" x-pid="364" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
messages-20141011:2014-10-11T04:02:02.079917-06:00 udr-oradl01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.12" x-pid="739" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
messages-20150124:2015-01-24T04:02:01.497596-07:00 udr-oradl01 rsyslogd: [origin software="rsyslogd" swVersion="5.8.12" x-pid="819" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Run Code Online (Sandbox Code Playgroud) 这是 INPUT 的一个片段:
...
####################
Bala Bela;XXXXXX12345;XXXXXX12345678;A
SERVER345Z3.DOMAIN.com0
SERVER346Z3.DOMAIN.com0
SERVER347Z3.DOMAIN.com0
SERVER348Z3.DOMAIN.com0
ssh-dss ...pubkeyhere...
####################
Ize Jova;XXXXXX12345;XXXXXX12345;A
SERVER342Z3.DOMAIN.com0
SERVER343Z3.DOMAIN.com0
SERVER345Z3.DOMAIN.com0
ssh-rsa ...pubkeyhere...
...
Run Code Online (Sandbox Code Playgroud)
这是我需要的 OUTPUT 片段:
Bala Bela;XXXXXX12345;XXXXXX12345678;A
4
Ize Jova;XXXXXX12345;XXXXXX12345;A
3
Run Code Online (Sandbox Code Playgroud)
所以我需要来自 INPUT 的 OUTPUT,以便我可以看到有多少行以“SERVER”开头给给定用户(例如:“Bala Bela;XXXXXX12345;XXXXXX12345678;A”)。我怎样才能在 bash 中做到这一点?
内核高达 3.19,我所有的 USB 设备都可以完美运行。
升级到 4.0 或更高版本后,我的一些 USB 设备停止工作,内核产生如下错误:
[ 3.369436] usb 9-1: device descriptor read/64, error -62
[ 3.593543] usb 9-1: new full-speed USB device number 4 using ohci-pci
[ 3.997572] usb 9-1: device not accepting address 4, error -62
[ 4.120602] usb 9-1: new full-speed USB device number 5 using ohci-pci
[ 4.524792] usb 9-1: device not accepting address 5, error -62
[ 4.524911] usb usb9-port1: unable to enumerate USB device
[ 15.402105] usb 9-1: new full-speed USB …Run Code Online (Sandbox Code Playgroud)