Unix & Linux

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

2
如何分配8个块但文件大小为0?
有人在其他站点上问我这个问题,即名为“ abc.dat”的文件的文件大小为0,但有8个块,这是我要他给我的输出(某些文本已从中文翻译成英文): $ cp abc.dat abc2.dat; ls -ls abc2.dat #try to copy, it still 8 blocks but 0 byte 8 -rw-rw-r-- 1 rokeabbey rokeabbey 0 Feb 27 19:39 abc2.dat 8 -rw-rw-r-- 1 rokeabbey rokeabbey 0 Sep 18 19:11 abc.dat#抱歉,这可能是他添加的额外错误输出 $ stat abc.dat File: 'abc.dat' Size: 0 Blocks: 16 IO Block: …

1
为什么此手册页有今天的日期?
为什么man在我nc不对系统进行任何更新的情况下,特定页面(对于我而言,对于命令而言)具有今天的日期?另外,为什么“无人值守更新”日志未显示当天的任何特定活动? 2018-03-14 07:47:38,124 INFO Initial blacklisted packages: 2018-03-14 07:47:38,135 INFO Starting unattended upgrades script 2018-03-14 07:47:38,135 INFO Allowed origins are: ['o=LinuxMint,a=qiana-security', 'o=LinuxMintESM,a=qiana'] 2018-03-14 07:47:51,767 INFO No packages found that can be upgraded unattended and no pending auto-removals 这是nc手册页的页脚: BSD March 14, 2018 BSD 那是在Linux Mint 17(qiana)上,它基于具有groff 1.22.2和man-db 2.6.7.1的Ubuntu 14.04(可信任)。 编辑 …


3
如何从ifconfig命令捕获第一个IP地址?
如何捕获来自ifconfig命令的第一个IP地址? ifconfig -a enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255 inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link> ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet) RX packets 26846250 bytes 12068811576 (11.2 GiB) RX errors 0 dropped 58671 overruns 0 frame 0 TX packets 3368855 bytes 1139160934 (1.0 GiB) TX errors 0 …
9 linux  bash  awk  sed  ifconfig 

3
如何设置ssh不仅尝试端口22,而且每次尝试次端口?
为了减少日志中的噪音并稍微降低可发现性(并且在fail2ban之上,仅允许公共密钥身份验证等),我经常在设置为其他端口的服务器上更改sshd端口,例如5492。目前我将-p 5492附加到我的ssh命令中,或将每个特定服务器的端口添加到了我的中ssh_config。 如果端口22不起作用,是否可以配置ssh尝试同时连接到端口22和端口5492?

3
外壳扩展(A | B)的文件名?
or例如,当读取文件时,是否可以在shell中扩展选择范围。 我的意思是,例如,它grep支持类似于(A|B)文件中的A或B的语法。 同样,如果我有这些文件: file1.txt file2.txt file3.txt file4.txt file5.txt 我能做到cat file{1..5}.txt的bash,因为它扩大了范围。是否有等效的方法仅对几个文件执行此操作? 例如cat file(1|5).txt,仅打印那些2?

2
XML命令行(shell脚本)操作
如何在Shell脚本中从命令行操作XML? 有许多用于处理表格数据,替换环境变量或用正则表达式替换文本片段的命令,但是我还没有发现任何针对XML的命令。 我的构建脚本需要在xml文档的主标签中插入一个带有内容的标签,为此我发现在OS中安装Java,Perl或python是一个杀手kill脚(我的脚本是在gitlab中使用docker镜像完成的,因此我的工作使用maven:3.5-jdk-8图片中可用的工具将是一个梦想)。 我不想用sed处理XML,尽管在我的构建脚本中它可以工作,因为它很邪恶。 示例:我有以下xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- a lot of other tags--> </project> 我想插入以下代码块: <distributionManagement> <repository> <id>private-releases</id> <url>https://my.private.server.com/nexus/repository/maven-releases/</url> </repository> </distributionManagement> 在项目代码中(并且无论是在开始还是结束时都没有关系。

1
通过SSH唤醒局域网
多年来,我已经为许多Linux设备成功使用了Wake-on-LAN。它运作良好。 但是,我在家也有Mac Mini。我注意到它进入睡眠状态,并且具有两个与我在睡眠状态下拥有的Linux机器不同的属性: 它仍然响应网络上的ping。 它将在进入ssh连接时自动唤醒,而无需局域网唤醒。 第2个属性最终非常好:它在不使用时会自动进入睡眠状态并节省电量,并且在我要插入它时不需要任何额外的考虑即可开机。它只是自动唤醒。在我注销后,十五分钟后它将再次进入睡眠状态。 我的假设是因为Apple控制着硬件和软件堆栈。因此,虽然业界范围内的Wake-on-LAN是基于魔术包(不需要操作系统交互)的网络设备功能,但是Mac的魔术“ LAN唤醒并且仍然可以响应ping”是因为它们实际上并没有使整个操作系统进入睡眠状态和/或使单独的网络堆栈仍在睡眠模式下运行。但这只是一个猜测。 我很好奇,是否有人在Linux机器上看到或实现过这种“ Wake-on-incoming-SSH”?还是仅在通过硬件控制软件的Apple设备上才能找到这种特殊的魔力,而其他设备却无法以其他方式做到这一点?

1
.inputrc与.bashrc设置
我注意到其中的一些设置.bashrc和.inputrc文件看起来相同或相似,例如: shopt -s nocaseglobvs set completion-ignore-case export HISTSIZEvs set history-size export HISTFILESIZEvsset history-size .inputrc设置是否还会影响python shell中的完成和历史记录大小(如果在终端中运行)? 是HISTSIZE通过限制history-size或它覆盖它?
9 bashrc  inputrc 

2
Chrome占用了所有RAM并冻结了系统
如何防止Chrome占用超过4GB的内存。他不时决定采用7GB(总共8GB RAM)之类的东西,并使我的计算机无法使用。 您有什么帮助吗? PS:我什至没有打开超过10个标签。编辑:也许我做了...类似15的东西。无论如何,我希望chrome冻结或关闭而不冻结整个系统。

1
谁在启动我的ssh-agent,为什么它不能正确终止?
这是我很长一段时间以来一直遇到的问题,但是每次我尝试弄清某些东西时,我都会迷路,所以我想最好在这里问一个也许更有经验的人可以帮助我。 背景 我的Raspberry Pi正在运行Raspbian Jessie,我经常使用SSH登录并远程执行命令。在我的第一个SSH会话中,我注意到每次登录时都会在RPi上ssh-agent生成一个进程,但是在注册时却没有杀死该进程exit:多次登录和注销会导致生成一堆ssh-agent进程,只是让它们挂在那儿什么也不做。最近,我在各处闲逛并阅读手册页和答案,我了解了的目的ssh-agent,并且我还了解到注销通常应该将其杀死,因此我开始自问为什么不这样做。此外,我注意到发行source ~/.bashrc会导致产生另一个实例ssh-agent。我在相关手册页上阅读之所以SSH_AGENT_PID应该定义环境变量,是因为应该在该ssh-agent程序中启动该程序eval以执行其输出并定义此类变量,然后这些变量将由其他与SSH相关的命令使用,包括ssh-agent -k(杀死相对于当前会话的代理),所以我跑了echo $SSH_AGENT_PID和echo $SSH_AUTH_SOCK,但他们都是空的。我突然意识到:可能该进程在注销时不会被终止,因为它ssh-agent -k试图从未设置的环境变量中读取其PID。 问题 由于ssh-agent未在注销时被杀死,并且这肯定是由于未设置所需的环境变量而发生的,因此只能表示一件事:调用ssh-agent登录的任何人都可能无法以正确的方式进行操作(应该如此eval "$(ssh-agent -s)")。所以我想:那是什么问题?我将发现执行了哪个配置文件,服务或登录脚本以启动代理并手动对其进行修复!到底在哪里? 我尝试过的 由于我注意到ssh-agent每次调用都会产生一个source ~/.bashrc,因此这是我检查的第一个文件,但是那里甚至没有远程引用与SSH相关的任何文件。我一直在以下所有文件中搜索使用vi的字符串ssh,但未发现任何内容: ~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile /etc/profile.d/ (every file in this folder) /etc/environment 还有其他文件可以参与source ~/.bashrc吗?我真的不知道 然后,我搜索了相关systemd服务,但仅找到ssh.service,即WantedBy=multi-user.target,因此未在登录时运行(而且很明显,因为这是SSH服务器守护程序)。 我还尝试将文件/home/pi夹中的每个文件都移到一个临时文件夹,然后注销并再次登录,但ssh-agent仍然生成。 最终,我还打开了我在会议厅中拍摄的最后一张照片:我find / -name 'ssh-agent'以root身份运行,仅打印/usr/bin/ssh-agent了一个可执行文件,因此我创建了一个伪造的可执行文件,该可执行文件基本上只记录了父命令: #! /bin/bash ps -o args= $PPID > /home/pi/LOG cat /proc/$PPID/cmdline >> /home/pi/LOG 我重命名了真实的,/usr/bin/ssh-agent并用设置了正确权限/用户/组的伪造替换了它,source ~/.bashrc再次运行,然后打印了LOG文件: …

1
在STDERR之前显示STDOUT?
我是bash的新手,我一生都./fff无法解决如何在stderr之前运行某个命令,假设并打印常规stdouts(我对自己的含义感到困惑) 例如 $ printf "I am a\ndrill\n" > fff; $ cat fff nofile fff nofile fff I am a drill cat: nofile: No such file or directory I am a drill cat: nofile: No such file or directory I am a drill 需要打印如下: I am a drill I am a …

4
在/ bin / sh中的冒号上分割字符串
我的dash脚本采用形式的参数hostname:port,即: myhost:1234 而port是可选的,即: myhost 我需要将主机和端口读入单独的变量。在第一种情况下,我可以这样做: HOST=${1%%:*} PORT=${1##*:} 但这在第二种情况下不起作用,当省略了port时;echo ${1##*:}只是返回主机名,而不是一个空字符串。 在Bash中,我可以这样做: IFS=: read A B <<< asdf:111 但这不适用于dash。 能否在拆分字符串:在仪表板,而无需调用外部程序(awk,tr,等)?
9 shell  string  dash 

1
如何清理复制/粘贴缓冲区?
我注意到,当我选择一些文本,进行复制然后尝试将其粘贴到例如gmail中时,它会保持格式。 在过去的十年中,这对我来说并不是一次令人满意的功能。 我目前正在使用glipper作为剪贴板管理器。 看来,如果我只是选择复制/粘贴项(在glipper中),则会导致其被清理。 每次复制/粘贴时,如何自动对其进行消毒? 我的想法也许是我必须为glipper写一个插件,但是必须有一些设置或挂钩可以让我仅使用x.org进行清理。 有什么想法吗? 谢谢!
9 xorg  clipboard 

3
用字符串变量保护Shell命令
在一种编程语言中,我执行一个简单的shell命令 cd var; echo > create_a_file_here 与var是一个变量,其中包含一个字符串(希望)到我要在其中创建文件“ create_a_file_here”的地方的目录。现在,如果有人看到这一行代码,则可以通过分配例如来利用它: var = "; rm -rf /" 事情可能变得很丑。避免上述情况的一种方法可能是在var中的字符串中搜索一些特殊字符,例如';'。在执行shell命令之前,但是我怀疑这是否涵盖了所有可能的漏洞利用。 有谁知道一种确保“ cd var”仅更改目录而没有其他更改的好方法?

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.