Unix & Linux

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

1
ls -l和ls -lL
我知道这看起来像重复的,但先前提出的问题无法回答我的问题 所以在外壳程序中,我转到/home目录并在其中创建目录play 然后我转到此目录/home/play,并创建两个文件,第一个是文本文件,第二个是指向终端的符号链接tty 现在,如果我使用,ls -l我得到以下输出 在那里,如果我把ls -lL我得到这个 这种差异应该意味着什么?问号代表什么?

2
从脚本外部抑制bash执行跟踪(设置-x)
我试图找到这个问题的答案,但到目前为止还没有运气: 我有一个运行其他脚本的脚本,其中许多其他脚本中都带有“ set -x”,这使它们可以打印执行的所有命令。我想摆脱它,但是如果任何脚本将错误消息发送到stderr,则保留信息。 所以我不能简单地写 ./script 2>/dev/null 另外,我没有编辑其他脚本的特权,因此无法手动更改set选项。 我正在考虑记录从stderr到单独文件的所有内容,并过滤掉跟踪命令,但是也许有更简单的方法吗?
17 bash  shell  set 

1
我可以依靠/ etc / os-release在哪些Linux发行版上?
我试图找到一种方法来确定适用于大多数(或理想情况下)所有现代发行版的Linux发行版名称和版本。我注意到其中/etc/os-release包含我尝试的发行版(CentOS,Debian)所需的信息,但是依靠它的存在有多安全?诸如此类的命令uname -a实际上并没有包含相同的信息,并且lsb_release例如在最少的CentOS上显然不存在。 有没有一种快速找到确切发行版本的方法/etc/os-release?此外,在/etc/os-release保证包含NAME,VERSION和PRETTY_NAME字段?

1
如何使用自签名证书创建密钥库和信任库?
我们有JAVA服务器和客户端使用SSL通过网络进行通信。服务器和客户端使用证书相互认证。服务器和客户端使用的密钥库类型为JKS。服务器和客户端加载其密钥库和信任库文件。密钥库和信任库文件名是:server.keystore,server.truststore,client.keystore和client.truststore。我正在使用自签名证书仅用于测试。 问题: Q1。我想知道为什么我需要在步骤6中将服务器和客户端自己的证书添加到它们各自的信任库中。 Q2。我可以减少实现相同目的的步骤数吗?如果是,那怎么办? 为服务器创建RSA密钥,自签名证书,密钥库和信任库的步骤 生成私有RSA密钥 openssl genrsa -out diagserverCA.key 2048 创建一个x509证书 openssl req -x509 -new -nodes -key diagserverCA.key \ -sha256 -days 1024 -out diagserverCA.pem 根据私钥和公共证书创建PKCS12密钥库。 openssl pkcs12 -export -name server-cert \ -in diagserverCA.pem -inkey diagserverCA.key \ -out serverkeystore.p12 将PKCS12密钥库转换为JKS密钥库 keytool -importkeystore -destkeystore server.keystore \ -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias …
17 openssl  ssl 

2
为什么在ssh shell中导出变量会打印导出的变量列表?
考虑一下: $ ssh localhost bash -c 'export foo=bar' terdon@localhost's password: declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" declare -x HOME="/home/terdon" declare -x LOGNAME="terdon" declare -x MAIL="/var/spool/mail/terdon" declare -x OLDPWD declare -x PATH="/usr/bin:/bin:/usr/sbin:/sbin" declare -x PWD="/home/terdon" declare -x SHELL="/bin/bash" declare -x SHLVL="2" declare -x SSH_CLIENT="::1 55858 22" declare -x SSH_CONNECTION="::1 55858 ::1 22" declare -x …
17 bash  ssh 


1
使Linux与本地磁盘读取同时写入网络文件系统
摘要 您如何将Linux配置为既可以从本地磁盘/文件系统读取又可以同时写入网络共享,而不是在没有数据通过网络传输时进行读取,然后在通过本地磁盘访问网络时通过网络发送数据闲? 同时读取和写入要快得多,而不是只交替执行一项操作,然后再执行另一项操作。 细节 我正在将大量数据从Linux计算机上的本地磁盘移至NAS设备。 我rsync用来基本上复制/srv/data到/mnt/nas,这是CIFS挂载。 它运行良好,读取速度为100MB /秒,写入NAS的速度为100MB /秒(千兆网络的限制),并且读取和写入同时进行。 但是现在,几个小时后,我发现它正在从本地磁盘读取,然后在将其写入NAS时停止读取,然后当没有更多数据要写入NAS时,它将恢复从磁盘中读取再次。读取磁盘时网络处于空闲状态,而使用网络时磁盘处于空闲状态。 不用说,先读取200MB再写入200MB比同时读取和写入200MB所需的时间长得多。 如何配置内核,使其同时保持早期的读写行为,而不是在读写之间交替进行,一次只执行一次操作? 一些观察:当本地磁盘以100 + MB / sec的速度读取时,一切似乎都并行发生,但是一旦磁盘变慢(由于某种原因,现在似乎仅以20MB / sec的速度),这就是这种读/写操作切换似乎发生了。 我还sync可以每隔几秒钟手动运行一次,以使写入与读取并行发生(尽管显然速度有所降低),但是放入sync一个while循环使其每五秒钟运行似乎不是正确的解决方案... 内核似乎会缓存大约1GB的数据,然后尽可能快地通过网络将其写出-很好-我只是不明白为什么在通过USB发送数据时为什么需要停止读取慢速磁盘网络。
17 linux  io  cache  cifs 

1
Zsh制表符补全无法部分路径所需的工作
我想要中的文件和目录不区分大小写的模糊完成zsh。阅读了几个小时的手册后,我想到了以下内容: zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}' zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}' zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}' 此外,我想按TAB一次以显示可能的补全,仅在有一个补全的情况下才修改输入的内容。然后再按TAB一次将使我进入“菜单完成”模式。根据手册,我想到了以下内容: zstyle ':completion:*' menu select 现在,在一种情况下,一切都会按预期进行。我有两个文件夹,Desktop并且.rstudio-desktop在主目录中。既然有了setopt globdots,我希望输入以下内容: $ cd ~/dktop<TAB> 保留输入的命令,并显示为完成候选Desktop和.rstudio-desktop。相反,它将删除 dktop,剩下以下内容: $ cd ~/ 我看了所有相关的手册,指南,Stack Exchange问​​题以及其他各种来源。但是无论我做什么,我都无法完成这项工作。 不过,有趣的是,如果我在主目录中并键入以下内容,则一切都会按预期进行: $ cd dktop<TAB> 也就是说,这仅是路径的非前导段的问题(您可以看到C-x h,这对应于directories标记而不是local-directories所使用的标记)。 为了易于重现,此处提供了~/.zshrc一种可以重现上述情况和行为的工具(在zshHomebrew 的全新El Capitan虚拟机上进行了测试)。
17 zsh  autocomplete 

4
是否可以在同一台计算机的2个不同的操作系统之间共享文件?
我的电脑是双启动。我已经安装了Red Hat Enterprise Linux 5和Windows 7 Ultimate。我在两个操作系统中都需要一些通用文件。现在,我通过与系统相连的辅助存储设备(USB或DVD RW)访问和操作这些文件。 是否可以创建可供Linux和Windows操作系统访问的公用文件夹/目录。是否可以通过这两个操作系统来处理此类文件夹/目录中的文件。怎么样?

1
何时使用grep,更少,awk,sed [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我正在进入Linux的世界,在工作中,我使用的grep越来越多。通过这样做,我发现有时候这不足以满足我的需求。 grep几天前,我在苦苦挣扎,我的一位资深Linux管理员同事告诉我使用awk。我以如此快的速度震惊了我。 所以我的问题是,您什么时候选择一个使用另一个?grep如果可以awk节省时间,在上班并花费大量时间之前,我可以问自己什么问题?
17 awk  sed  grep  less 

1
如何终止bash本身建立的TCP连接?
我曾经使用exec 3<>/dev/tcp/192.168.0.101/6435192.168.0.101:6435建立TCP连接。而且我已经收到并通过pipe命令发送了一些消息。 现在,我要终止TCP连接。但是,ss -anpet从中我可以看到bash本身保持了此连接,而没有派生子进程。 我试图将信号9和15发送到bash进程,但是如您所知,bash无法杀死自己。 因此,我可以在不终止正在使用的pt的情况下终止已建立的TCP连接(既不通过root杀死它也不发送Ctrl + D)吗?

2
如何避免字符串中bash变量后面的空格?
我有一个颜色变量。我用它通过在字符串内部求值来为字符串设置颜色。但是,我需要在名称后添加空格(以便名称不包含文本的一部分)。有时候看起来很糟。 如何避免使用(打印)该空间? 示例(假设Red=1和NC=2): echo -e "$Red Note: blabla$NC". 输出: 1 Note: blabla2. 预期产量: 1Note: blabla2.

3
程序如何确定是否有彩色输出?
从打印彩色输出的终端(例如ls或gcc)执行命令时,将打印彩色输出。据我了解,该过程实际上是在输出ANSI转义码,并且终端会格式化颜色。 但是,如果我通过另一个进程(例如自定义C应用程序)执行相同的命令,并将输出重定向到应用程序自己的输出,则这些颜色不会持久。 程序如何确定是否以彩色格式输出文本?是否有一些环境变量?

1
如何将文件从一个zfs文件系统移动到同一池中的另一个zfs文件系统?
我在同一个zfs池中有两个文件系统,/mnt/fs_a并且/mnt/fs_b。我想将大约1TB的数据从fs_a移至fs_b。但是当我: mv /mnt/fs_a/mythtv_recordings /mnt/fs_b/ 令我惊讶的是,它开始逐块复制文件。考虑到移动2GB文件所花费的时间,看起来此操作将需要几天的大量重击才能完成。 必须有一个更聪明,更快捷的方法来执行此操作,对吗?
17 zfs 


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.