Unix & Linux

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


1
rm -rf不是原子的吗?
我刚抓到一个令人困惑的错误: rm: cannot remove `xxx/app/cache/prod': Directory not empty 这是由以下命令引起的: rm -rf $cache_dir/* 在哪里$cache_dir定义为xxx/app/cache 所以我看到它像:rm删除了cache/proddir中的所有内容,然后在尝试删除cache/prod目录之前-另一个程序在其中创建了一个文件/目录,从而导致rm失败。 我的假设正确吗?
11 rm 

2
实用程序,用于驱动器上的TRIM未分配空间
我有一个带有几个ext4分区的驱动器(SD卡),但是还有一些未分配的空间。该fstrim实用程序只能在文件系统内工作。在我重新发明轮子并写一个轮子之前,是否有另一个实用程序可以对未分配的空间进行修剪(或者可以对明确指定的范围进行修剪)? 我可以确认的是,大部分的设备上未分配的空间是不是目前已知的控制器是免费的,因为我观察到,这种特殊的卡上,读取到修剪空间返回0的,但该设备显示的扫描剩下大量垃圾数据。 编辑:我在使用时遇到问题hdparm。下面的示例舍弃了第一个扇区,但是无论我指定的范围如何,我都会看到相同的结果。fstrim设备上没有任何问题: root@ubuntu:~# hdparm --please-destroy-my-drive --trim-sector-ranges 0:1 --verbose /dev/mmcblk0 /dev/mmcblk0: trimming 1 sectors from 1 ranges outgoing cdb: 85 0d 06 00 01 00 01 00 00 00 00 00 00 40 06 00 outgoing_data: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 …

2
Linux中大量无法预测的I / O性能下降
我使用Debian测试大约6年没有任何问题(我只是定期对其进行更新),但是最近它开始显示出一种随机行为,可以概括为“低I / O性能,一直持续到重启”。 问题是,突然所有磁盘的读写速度降低到〜5MB / sec,从而导致连续的读写操作。由于速率如此之低,因此磁盘不会受到机械挑战或压力,但是一切都会变慢,直到我重新启动为止。 计算机的I / O子系统由一个OCZ Vertex 3 SSD和两个WD Caviar Black HDD组成。SSD包含操作系统的大量读取数据,而HDD上的分区保留了其余部分。 为了诊断问题,我尝试了以下失败的尝试: top 在CPU和I / O使用率方面均未显示任何失控活动。 hdparm返回磁盘的正常性能等级(-t虽然我只检查了)。 smartctl不会在磁盘上显示任何性能问题。长时间的测试表明,这些磁盘与新磁盘一样好。 系统具有Z77芯片组,16GB RAM和Intel i7 3770K CPU,并且统计数据没有显示RAM,I / O或CPU饱和的迹象,但是我没有调试此类问题的经验(尤其是在内核空间中)。任何帮助将不胜感激。 更新1: 作为预防措施,我在每个分区上都运行(强制)fsck。所有的FS都是干净的。 偶然地,我发现一个BIOS升级是在一个月前发布并应用的。 没有分区填充超过50%。 更新2: 问题没有在两天内出现。无论是fsck或BIOS更新清洗系统中的一些堵塞。我仍在监视该问题,并将通过事后答复结束该问题。 更新3: 问题刚刚浮出水面,我做了更多的挖掘工作。请查看答案。
11 linux  performance  io 

1
有人可以解释不同类型的Unix域套接字吗?
如果我运行netstat --all | grep ^unix某些输出的套接字路径,则在其前面加上“ @”,而有些则没有。我注意到在浏览文件系统时,那些以“ @”开头的文件不会显示,ls而其余的则显示。 这两种插座是什么,它们之间有什么区别?
11 socket 

2
Shell功能`>(tee tee copyError.txt>&2)的名称是什么?
我需要将stdout和stderr登录到日志文件,但只在屏幕上显示错误消息。我可以这样做: cp -rpv a/* b 1> copyLog.txt 2> >(tee copyError.txt >&2) 这是我在网络上找到的。 我只想知道这>(tee copyError.txt >&2)东西叫什么?我无法使用Google搜索,因为Google会忽略尖括号和括号之类的字符。
11 bash  shell 

2
无法在NixOS中执行二进制文件-没有此类文件或目录
我试图在运行NixOS的VM上安装当前的oracle jre。 现在发生以下情况: [michas@cc:~]$ tar xvzf jre-7u40-linux-x64.tar.gz |grep bin/java jre1.7.0_40/bin/javaws jre1.7.0_40/bin/java_vm jre1.7.0_40/bin/java [michas@cc:~]$ ls -l ./jre1.7.0_40/bin/java -rwxr-xr-x 1 michas nogroup 7750 Aug 27 09:17 ./jre1.7.0_40/bin/java [michas@cc:~]$ ./jre1.7.0_40/bin/java bash: ./jre1.7.0_40/bin/java: No such file or directory WTF?命名文件显然在那里。到底是怎么回事? 尝试进一步分析: [michas@cc:~]$ strace ./jre1.7.0_40/bin/java execve("./jre1.7.0_40/bin/java", ["./jre1.7.0_40/bin/java"], [/* 53 vars */]) = -1 ENOENT (No such …

2
`kill -p`真的有效吗?
在它的手册页中kill,内容如下 概要 kill [ -s signal | -p ] [ -a ] [ -- ] pid ... kill -l [ signal ] -p Specify that kill should only print the process id (pid) of the named processes, and not send any signals. 但是,由于我在RH和RHEL中都尝试了很多次,所以命令像kill -s SIGHUP |-p 123从未使用过,总是报告错误 bash:-p:找不到命令 我有没有犯错?

4
内置命令何时加载到内存
假设我输入cd了我的shell。cd那时候是从内存加载的吗?我的直觉是,这些内置命令在内核加载后会预先加载到系统内存中,但是有人坚持说只有在我实际调用命令时(在外壳上按Enter键)才加载它们。您能否告诉我是否有参​​考文献对此进行解释?

1
“ + b#”软件包版本在Debian中是什么意思?
今天,我检查了自己的升级,并在Debian测试中看到了63个升级。精细。我很好奇,因为其中大多数都被阻止了,所以我过去-V经常看这些版本。令我惊讶的是,其中大多数都在升级到+b1或+b2版本。我就像一个好男孩一样apt-get changelog libc6(是的,这一点很重要),只是看到变更日志没有+b1版本。那么,这些版本有什么用? sudo apt-get -V upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages have been kept back: gdm3 (3.4.1-9 => 3.4.1-9+b1) libalgorithm-diff-xs-perl (0.04-2+b2 => 0.04-2+b3) libapt-pkg-perl (0.1.29 => 0.1.29+b1) libcairo-perl (1.103-2 => 1.103-2+b1) libclass-c3-xs-perl (0.13-1+b2 => 0.13-1+b3) libclone-perl (0.34-1 => 0.34-1+b1) libcrypt-blowfish-perl …

3
为什么pulseaudio处理与BT设备的音质连接?
我是Linux的新手,也是Bluetooth脚本的新手。到目前为止,我发现的是以下内容: Bluez是默认的BT堆栈。 BluezTools是一组实用程序,可用于更轻松地与Bluez进行交互 DBus是Bluez与硬件直接交互时所连接的接口。 PulseAudio是负责在系统上产生音频的子系统。 这是有道理的。因此,假设我有一套蓝牙耳机,我期望的是(都在配对和信任之后),以便能够发出可以直接连接到BT耳机上特定配置文件的命令。 我想到的技术路线可能是这样的: 打开耳机。 发出BluezTools命令-例如bt-audio -c 等待设备连接到我要的服务 现在,PulseAudio应该选择一个新的输出设备 发出另一个命令,将音频从原来的音频更改为新的输出音频(BT耳机)。 享受无缝的聆听体验。 这一切似乎合乎逻辑,但是实际的实现方式并非如此,我正在寻找WHY,因此我可以更好地理解问题并尝试解决它。 实际上是这样的: 打开耳机。 发出BluezTools命令-例如bt-audio -c 等待设备连接到我要的服务 现在,PulseAudio应该选择一个新的输出设备 发出PulseAudio命令将音频配置文件从电话质量更改为高保真度。 让我对此进行扩展。蓝牙耳机提供2种质量模式(电话和高保真)。只有1个真正适合听音乐。 我希望BT耳机将每种质量模式作为服务公开,对吗?这个假设可能是错误的,但我希望 bt-audio -c highFidelityProfile 要么 bt-audio -changeProfile highFidelityProfile 相反,Bluez似乎只是处理与设备的RAW连接,因此您需要从那里发出:pacmd set-card-profile $ INDEX a2dp 这似乎根本上是错误的。为什么在音频子系统中进行质量控制,从而要求对脉冲或alsa或其他声音子系统进行不同的实现? 我想念什么?为什么无法使用Bluez / BluezTools等直接连接到特定配置文件?

2
Arch Linux的启动日志
我的Arch安装在引导时会引发红色错误,但我看不到它的含义,因为它在加载过程中飞速移动。引导日志在哪里?它会在/ var / log中吗?还是在/ boot中? 宁愿看到日志文本文件而不是滚动锁定技巧。
11 arch-linux  boot  logs 

4
如何删除文本文件中的所有英文行?
我有这个文本文件: 714 01:11:22,267 --> 01:11:27,731 Auch wenn noch viele Generationen auf einen Wechsel hoffen, Even if it takes many generations hoping for a change, 715 01:11:27,732 --> 01:11:31,920 werde ich mein Bestes geben und hoffe, dass andere das gleiche tun. I'm giving mine, I'm doing my best hoping the other …
11 text 

4
在树中找到所有末端子目录
给出以下结构: oz123@debian:~/ $ tree . . ├── a │ ├── a1 │ ├── a2 │ └── a3 ├── a1 │ ├── a11 │ ├── a12 │ └── a31 ├── b │ └── b1 │ ├── b11 │ │ └── b21 │ │ └── b31 │ ├── b12 │ └── b3 …

3
是否有一种简单的方法来记录所有执行的命令,包括命令行参数?
我试图找到如何记录特定的实例化,rrdtool以查看其接收的路径是否不正确。 我知道我可以将可执行文件包装在可以记录参数的shell脚本中,但是我想知道是否还有一种更特定于内核的方式来监视它,也许是一个文件系统回调,它可以在特定的/ proc / pid / exe文件中看到匹配给定的二进制?
11 logs  proc  arguments  audit 

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.