Unix & Linux

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

2
当有多个指向可执行文件的符号链接时,如何使用包装脚本记录调用
长话短说:我想跟踪一些可执行文件的调用方式,以跟踪某些系统行为。假设我有一个可执行文件: /usr/bin/do_stuff 实际上,它通过符号链接由许多不同的名称调用: /usr/bin/make_tea -> /usr/bin/do_stuff /usr/bin/make_coffee -> /usr/bin/do_stuff 等等。显然,do_stuff将使用接收到的第一个参数来确定实际要执行的操作,其余的参数将根据该参数进行处理。 我想记录一下对它的调用/usr/bin/do_stuff(以及完整的参数列表)。如果没有符号链接,我会干脆转移do_stuff到do_stuff_real写一个脚本 #!/bin/sh echo "$0 $@" >> logfile /usr/bin/do_stuff_real "$@" 但是,据我所知,它将检查调用它的名称,这将不起作用。如何编写脚本以实现相同但仍传递给do_stuff正确的“可执行使用名称”? 为了记录在案,请避免出现以下情况的答案: 我知道我可以用C语言(使用execve)来做到这一点,但是如果我可以在这种情况下只使用shell脚本,那会容易得多。 我不能简单地do_stuff用日志记录程序代替。

3
ln -s:从一个来源到多个目的地
伪码 ln -s $HOME/file $HOME/Documents/ $HOME/Desktop/ 我要在其中创建从源到两个目标的符号链接。可能是moreutils和pee。 如何从一个来源创建许多符号链接?
8 symlink 

2
为什么在包含其他文件系统的文件中碎片级别如此之大?
我刚刚发现了稀疏文件,并想对它们进行一些实验。在Wiki上,您可以阅读到文件很容易碎片化。我想检查那有多糟。我以以下方式创建文件: # truncate -s 10G sparse-file # mkfs.ext4 -m 0 -L sparse ./sparse-file 我安装了稀疏文件,并放入了600M文件。碎片级别如下所示: # filefrag -v "/media/Grafi/sparse-file" Filesystem type is: ef53 File size of /media/Grafi/sparse-file is 10737418240 (2621440 blocks of 4096 bytes) ext: logical_offset: physical_offset: length: expected: flags: 0: 0.. 1032: 36864.. 37896: 1033: 1: 1043.. 1043: 37907.. 37907: …

1
是否已弃用startx?
startx 说: -------------------------------------------------------------------------------------------- xinit failed. /usr/bin/Xorg is not setuid, maybe that's the reason? If so either use a display manager (strongly recommended) or adjust /etc/permissions.local and run "chkstat --system --set" afterwards 显然,我可以运行chmod 4775 /usr/bin/Xorg,直到下一次Xorg更新再次删除suid位为止。但是,如何“强烈建议”使用“使用显示管理器”对我来说一点都不明显! 这是什么意思? 现在startx 已弃用? 我应该输入什么呢? 那为什么startx不做正确的事呢?如果X发生故障,这将是您的救生员;可能是人们必须学习的第一批命令之一。 我很确定我的系统正在使用显示管理器。我有xdm,kdm,gdm,lightdm和sddm。它启动到桌面环境,注销后会显示一个登录屏幕。换句话说,这是一个标准的台式机安装程序,但是如果需要解决的话,我将在OpenSuse Tumbleweed上使用KDE。 在任何Unix上,我将接受一份经过适当记录,合理完整的清单,其中列出了被startx替换的各种特定命令。如果有什么功能与OpenSuse完全不同,我发誓我会写一个错误报告。我讨厌看到一个我们大家都知道的用户界面,由于纯粹的技术原因而被颠倒了,却没人知道有什么替代品。
8 startx 

2
特定用户正在使用多少内存
是否可以找出我在多用户Linux机器上使用的内存量?我想知道我是否正在使用大量内存,并可能给其他人带来不便,因此如有必要,我可以关闭进程。 我在另一个问题中sa -m可能会这样做,但显然我无法在此服务器上访问该命令。 编辑:我没有sudo访问权限,所以我无法安装东西。服务器是CentOS。
8 users  memory 



1
为什么文件到命名管道之间的重定向不起作用,而管道到cat却起作用?
这是使用nc的Unix中的简单回显服务器: mkfifo fifo cat fifo | nc -k -l 4458 -v | cat >fifo (基于此) 如我所见,数据流的工作方式如下: fifo (my named pipe) | | (using cat) | v nc | | (using cat) | v fifo 这里是一个问题:为什么这不起作用? nc -k -l 4458 -v >fifo <fifo 你会发现,如果试图telnet以localhost对4458,你会得到一个“连接被拒绝”的错误。
8 pipe  socket  fifo 

2
bash将通配符扩展与大括号扩展相结合
我正在尝试扩展一个字符串,该字符串涉及通配符和括号内指定的扩展名集合。如以下示例所示,似乎没有任何效果。变量firstList扩大罚款,但没有secondList,thirdList还是fourthList扩展正确。我也尝试过各种版本,eval但都没有用。任何帮助,将不胜感激 #!/bin/bash touch a.ext1 touch b.ext1 firstList='*.ext1' ls $firstList touch a.ext2 touch b.ext2 secondList='*.{ext1,ext2}' ls $secondList ls '$secondList' ls "$secondList" thirdList=*.{ext1,ext2} ls $thirdList ls '$thirdList' ls "$thirdList" fourthList="*.{ext1,ext2}" ls $fourthList ls '$fourthList' ls "$fourthList"

2
脚本化的Linux内核配置
给定一系列内核功能,我想创建一个最小的linux配置,该配置支持所有给定的功能(以及相应的依赖项),但没有别的。 有没有一种创建allnoconfig的方法和一种启用功能的工具? (我可以编辑.config文件,但不能正确获得依赖关系。我可以使用make *config,但据我所知,它们只能以交互方式工作或创建一些默认配置。)
8 linux  kernel 

3
cURL不会连接到HTTPS,而wget却连接到HTTPS(NSS错误-12286)
NSS error -12286使用从HTTPS下载文件时出现错误curl。 我可以下载相同的文件而不会出现任何问题,wget因此可以排除任何防火墙或黑名单问题。 根据Qualys SSL Labs测试服务器工具,已经尝试过但没有运气的选项-k和--cipher ecdhe_ecdsa_aes_128_gcm_sha_256,这是服务器首选的密码:https ://www.ssllabs.com/ssltest/analyze.html?d=intribunale.net&latest 这是cURL日志: # curl -v https://www.intribunale.net/immobili * About to connect() to www.intribunale.net port 443 (#0) * Trying 104.27.150.214... connected * Connected to www.intribunale.net (104.27.150.214) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * NSS error -12286 …
8 curl  nss 

5
是否有工具可根据要求将输出动态重定向到新文件
我目前正在将监视工具的输出重定向到文件,但是,我想做的是根据我的请求(使用键绑定)将该输出重定向到新文件,而无需停止所说的工具。 就像是 monitor_program | handle_stdout 在哪里handle_stdout,我可以定义一个新文件,将日志放在特定位置。 我知道我可以轻松编写它,但是我想知道是否已经有工具允许这样做。

1
带有Samba的Docker容器退出,没有任何消息
我们有一台运行CentOS的服务器,在Docker容器中有多个服务将它们与主机更改分开。 上周星期五,我们在CentOS上进行了更新,从那时起,我们的一项服务便启动并立即退出。其他15多个服务都很好。 我克隆了容器设置,更改了容器名称并重建,但遇到了相同的问题:容器启动后退出,没有任何消息。 该容器派生自David Personette的samba容器。现在退出但尚未使用的实际命令是: exec ionice -c 3 smbd -FS 我应该降级Docker会有副作用吗?还有什么我可以做的让它再次运行?我们选择了要从操作系统抽象的容器,这种抽象是否不如预期的好?
8 samba  docker 

2
如何安装R的devtools和数字化?
我需要devtools,因为我需要功能install_github来在此处安装数字化 的非CRAN软件包。我安装了R sudo apt-get install r-cran-robustbase 正如terdon的回答所建议的那样,我没有立即安装R的软件包,但是我可以更正权限: sudo chmod 755 /usr/lib/R/site-library/ 我认为这是默认设置。然后,我必须按照rcs的答案建议进行操作,以成功安装devtools,tpoisot/digitize但只能使用 sudo apt-get install libssl-dev sudo apt-get install libcurl4-openssl-dev R install.packages('httr') install.packages('git2r') install.packages('devtools') library(devtools) install.packages('readbitmap') install_github('tpoisot/digitize') 最后一条命令的输出可以是 Skipping install for github remote, the SHA1 (d16e28b9) has not changed since last install. Use `force = TRUE` to force installation 这样做install_github('tpoisot/digitize', …

1
标准子Shell与命令替换子Shell
请解释以下陷阱输出: $ line(){ echo -------------; echo $BASHPID; } $ trap 'echo bye' EXIT; trap -p; line; (trap -p; line); echo "$(trap -p; line)" trap -- 'echo bye' EXIT trap -- '' SIGTSTP trap -- '' SIGTTIN trap -- '' SIGTTOU ------------- 6176 trap -- '' SIGTSTP trap -- '' SIGTTIN …
8 bash  trap 

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.