Unix & Linux

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

3
创建仅执行一个命令的UNIX帐户
有没有一种方法可以在Solaris中创建一个用户帐户,该帐户仅允许用户运行一个命令?没有登录外壳或其他任何东西。我可以使用/usr/bin/falsein 来做到这一点,/etc/passwd只是将用户吸引到ssh <hostname> <command>,但是有更好的方法吗?


2
根据用户或zsh中的root更改提示颜色
在zsh中,您可以%#在您的PS1(或任何PROMPT变量)中使用a,这基本上意味着%在用户情况下显示,#在root 用户情况下显示。我想知道是否有任何方法可以影响此效果,从而使%或#根据用户或根更改颜色(根为红色,用户为蓝色),显而易见的方法是更改PS1根中的,~/.zshrc但是考虑这已经是一个特殊的符号,我想知道是否可能没有办法PS1对两者都使用相同的东西…… %#zsh 特有的东西(我敢肯定,还有其他一些我也可以这样做的技巧) if语句)。
13 shell  zsh  colors  prompt 

4
sendmail在这里指的是什么?
当我从debian仓库安装sendmail时,得到以下输出: Disabling HOST statistics file(/var/lib/sendmail/host_status). Creating /etc/mail/sendmail.cf... Creating /etc/mail/submit.cf... Informational: confCR_FILE file empty: /etc/mail/relay-domains Informational: confCT_FILE file empty: /etc/mail/trusted-users Updating /etc/mail/access... Updating /etc/mail/aliases... WARNING: local host name (ixtmixilix) is not qualified; see cf/README: WHO AM I? 有人可以告诉我这是什么意思,要限定我的主机名我需要做什么?

2
建立SSH连接时如何指定本地端口?
我在IDC中托管了两台服务器。我只能使用端口20/21/22/23/3389 / 33101-33109建立两个服务器之间的连接。IDC网络设备将阻止其源或目标端口不在20/21/22/23/80/3389 / 33101-33109列表/范围内的任何其他数据包。但是SSH的源端口是随机的。 使用该命令 可以轻松指定一个远程端口。ssh username@server -p remote_port 那么,是否有一个ssh命令参数或其他方式可以指定本地源端口,以便我可以使用端口33101建立SSH连接? 我的网络拓扑如下:
13 ssh  networking 

1
防止注销杀死tmux会话
我注意到,从X用户会话注销(注销)将杀死tmux我发起的任何会话,甚至包括我使用过的会话sudo tmux和类似命令。我确信以前没有发生过这种情况,但是最近发生的一些变化影响了这种行为。 即使结束X会话后,如何维护这些tmux(或screen)会话?

2
如何在Ubuntu 18.04上使以太网优先于wifi?
目标 插入以太网电缆时,让以太网优先于无线 方法 经过大量的谷歌搜索和阅读后,我认为我应该做的事情与 nmcli connection modify [id-of-ethernet-interface] ipv4.route-metric 200 nmcli connection modify [id-of-ethernet-interface] ipv6.route-metric 200 其中200是比无线指标低的值,以使以太网优先于无线指标。 结果 使我感到困惑的是,我route -n执行上述命令并重新启动后(从很好的角度来看),我从中获得的报告,以及事实似乎并不等于达到我的目标 $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 123.456.89.1 0.0.0.0 UG 600 0 0 wlp1s0 0.0.0.0 123.456.89.1 0.0.0.0 UG 20200 0 0 …

2
终端命令以查找服务器是虚拟服务器还是物理服务器
我正在寻找一个终端命令,该命令不要求执行用户位于sudoers组中并且也具有通用性,并且不需要安装其他软件包。到目前为止,我发现如果系统已安装systemd,则可以使用: $ hostnamectl status Static hostname: mint Icon name: computer-laptop Chassis: laptop Machine ID: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb Boot ID: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Operating System: Linux Mint LMDE Kernel: Linux 3.16.0-6-amd64 在“图标名称和机箱”下,我可以看到它是VM还是物理机。但是我想知道是否可以使用lscpu,尤其是因为它是比通用的方法,hostnamectl并且不需要systemd。我的理论是,如果CPU每个核心只有一个线程,并且没有列出最小和最大CPU频率,则这应该表明服务器确实已虚拟化。 $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 2 Core(s) …

2
30%的RAM是“缓冲区”。它是什么?
$ free -h total used free shared buff/cache available Mem: 501M 146M 19M 9.7M 335M 331M Swap: 1.0G 85M 938M $ free -w -h total used free shared buffers cache available Mem: 501M 146M 19M 9.7M 155M 180M 331M Swap: 1.0G 85M 938M 如何在输出中描述或解释“缓冲区” free? 我对该系统没有任何(已知)问题。我只是感到惊讶和奇怪,看到“缓冲区”几乎与“缓存”一样高(155M与180M)。我认为“缓存”代表文件内容的页面缓存,并且往往是“缓存/缓冲区”的最重要部分。我不太清楚什么是“缓冲区”。 例如,我将其与具有更多RAM的笔记本电脑进行了比较。在我的笔记本电脑上,“缓冲区”数字比“缓存”(200M与4G)小一个数量级。如果我对什么是“缓冲区”有一个正确的了解,那么我可以开始问为什么在较小的系统上缓冲区可能会增长到如此大的比例。 man proc (我忽略了“大”的荒谬定义): …
13 linux  memory  cache 


3
您如何确定是否导出外壳变量?
对于Bourne shell家族,shell变量都具有大写的大小写名称;这意味着您不能仅通过查看其名称来判断特定变量是否为环境变量。您如何确定哪些Bourne shell变量是局部的(仅在当前shell中定义)?
13 bash  shell 

7
为什么会出现“第1行:$':\ r':命令未找到”?
我在笔记本电脑(DOS)上使用了Cygwin。我从同事和我的同事那里收集了一些脚本。我不是IT人员,也不了解Unix。我遵循同事的语法,能够处理一些简单的事情。 这些脚本在我的旧笔记本电脑上运行良好。我刚换了笔记本电脑,安装了Cygwin。当我运行脚本时,它们不起作用。这是我收到的错误消息的一个示例: line 1: $':\r': command not found line 5: syntax error near unexpected token `$'\r'' line 5: `fi 这是我脚本的前5行 : iter=1 if [ -f iter.txt ] then rm ./iter.txt fi 有人可以解释一下如何解决这个问题吗?

2
除Bash和Zsh之外的其他外壳程序是否支持ANSI-C引用?例如$'string'
我有一个shell脚本,该脚本使用以下命令在其输出中打印一个绿色的选中标记: col_green="\e[32;01m" col_reset="\e[39;49;00m" echo -e "Done ${col_green}✓${col_reset}" 在阅读了有关Bash的ANSI-C引用之后,我意识到我可以在设置颜色变量并-e从echo中删除标志时使用它。 col_green=$'\e[32;01m' col_reset=$'\e[39;49;00m' echo "Done ${col_green}✓${col_reset}" 这似乎很吸引人,因为它意味着无论将消息传递给Bash的内置echo还是外部util /bin/echo(我在macOS上),消息都能正确打印。 但这是否会使脚本的可移植性降低?我知道Bash和Zsh支持这种引用风格,但是我不确定其他人。

1
Linux的动态链接程序搜索路径的顺序是什么?
这不是重复的,因为这处理的是我在使用时注意到的特殊性/etc/ld.so.conf。 要获取动态链接程序在库中搜索的路径,请运行命令ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"。何时/etc/ld.so.conf未列出任何路径。上一条命令的输出是 /lib /usr/lib 我认为它/lib首先搜索,然后搜索/usr/lib。当添加新的路径,例如/usr/local/lib,对/etc/ld.so.conf再重拍/etc/ld.so.cache时,输出从ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"变 /usr/local/lib /lib /usr/lib 我觉得这很奇怪,因为如果我正确地搜索列出的目录的顺序是从上到下,那么在/lib和之前会搜索其他目录/usr/lib。在受信任目录之前搜索附加目录并不奇怪,但是在/lib之前搜索时/usr/lib,这很奇怪,因为/bin&/sbin在/usr/bin&/usr/sbinin 之后搜索PATH。 即使被列出的路径ldconfig -v | grep -Ev "^"$'\t' | sed "s/:$//g"是从底部寻找到顶部,它仍然是一个扭曲的排序,因为额外的目录会在受信任的人后,而被搜索/lib会后进行搜索/usr/lib。 那么,ld.so搜索库路径的顺序是什么?为什么/lib以前被搜索/usr/lib?如果不是,那么为什么还要搜索其他目录/lib?


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.