小编Tob*_*ght的帖子

如何修复显示不正确大小的 SD 卡?

我有一张 16 GB 的创见 SD 卡,正在我的智能手机中使用它。有一天,我发现智能手机只能识别 6 GB。我试图找到设置 SD 卡正确大小的解决方案,但不小心运行了这个:

dd if=/dev/zero of=/dev/sdc 
Run Code Online (Sandbox Code Playgroud)

/dev/sdc是我通过手机安装的 SD 卡。之后,我的卡根本无法识别(无论是电话,相机还是Linux机器都无法识别)。我知道我在它上面破坏了某种MBR(一些显示 SD 卡必要参数的初始记录)。

我使用的是 Linux,根本没有 Windows。我找到了一些适用于 Windows 的解决方案(例如,SDFix 应用程序),但是否有 Linux 替代方案?是否可以修复?

我希望找到一个与 SD Association SD Memory Card Formatter等效的 Linux (这是一个仅适用于专有操作系统的二进制程序)。

linux debian gentoo sd-card ubuntu

5
推荐指数
1
解决办法
3万
查看次数

如何快速从交换加载整个进程内存(linux)?

我并行运行了一堆 CPU 饥渴的进程;它们通常每个使用几 GB 的内存。他们有时也会分配大量内存(比如 150-250GB)。通常最多只有一个进程这样做,因此它们适合可用的 RAM(我的机器上为 384GB)。然而,有时会发生更多的人同时分配这么大的数量,并且(显然)由于交换而一切都变慢了。

在这种情况下,我会停止除一个内存占用进程之外的所有进程,以使其有效计算。但是换入一个停止的进程需要很长时间,因为这意味着以随机访问模式从磁盘加载数十 GB。因此问题是:如何强制单个进程从交换中顺序加载整个核心?

到目前为止,我只找到了一个 swappiness 内核提示,它(在 cgroups 的帮助下)可以防止进程进行更多的交换,但对去交换的性能没有帮助。关闭所有交换显然是不可能的,因为其他停止的进程必须占用那里的空间。

构建我自己的迷你调度程序也不是一种选择 - 进程是 python 中的各种小脚本/程序,内存峰值通常发生在库调用中,所以我无法预测峰值何时会出现。


澄清一下:我不考虑购买 TB 级的 RAM,在这种规模下它太贵了。将交换放在 SSD/SSD 阵列上只会有一点帮助(测量),因此它也不是我正在寻找的解决方案。


(部分自答):

看起来,如果没有内核黑客攻击,真正的顺序交换读取(仅属于单个进程的页面)几乎是不可能的:我测量过swapoff -a,它肯定没有顺序读取交换。如果这样的优化很容易实现,那么更快地阅读它是合乎逻辑的。

目前我最好的方法是/proc/[pid]/mem使用下面的脚本(必须以 root 身份运行)通过伪文件读取整个进程内存:

#!/usr/bin/python2
import re
import sys
pid=str(sys.argv[1]) # process pid given by the first arg

print(pid) # just to aviod mistakes

CHUNKSIZE=10485760  # single read() invocation block size

total=0
maps_file = open("/proc/"+pid+"/maps", 'r')
mem_file = open("/proc/"+pid+"/mem", 'r', 0)
for line in maps_file.readlines():  # for each …
Run Code Online (Sandbox Code Playgroud)

memory linux performance swap

5
推荐指数
0
解决办法
676
查看次数

Tar在压缩时遇到“无法打开:不是目录”

我在RHEL-6.4上使用 fakeroot v1.12.4 进行打包和提取。我有两个不同的服务器,我在其中使用 tar v1.23 压缩文件。一台服务器上的压缩失败并出现以下错误:

tar: ./isolinux/etc/modprobe.d/blacklist.conf: Cannot open: Not a directory
tar: Exiting with failure status due to previous errors
Run Code Online (Sandbox Code Playgroud)

如果我检查这个文件的文件类型(作为普通用户),它说它是一个 ASCII 文件:

girishp@~$ file ./isolinux/etc/modprobe.d/blacklist.conf
isolinux/etc/modprobe.d/blacklist.conf: ASCII English text
girishp@~$
Run Code Online (Sandbox Code Playgroud)

但是如果我在 fakeroot 环境中检查文件类型,它说它是目录:

+ file ./isolinux/etc/modprobe.d/blacklist.conf
./isolinux/etc/modprobe.d/blacklist.conf: directory
Run Code Online (Sandbox Code Playgroud)

我用来压缩的命令是:

tar -czf /home/users/girishp/tarfiles/mytar.tgz .
Run Code Online (Sandbox Code Playgroud)

使用*代替.

tar -czf /home/users/girishp/tarfiles/mytar.tgz *
Run Code Online (Sandbox Code Playgroud)

我比较了两台机器的环境变量,环境没有区别。如果我使用sudo而不是fakeroot,它工作正常。straceoftar表示它正在尝试使用O_DIRECTORY选项打开文件。

open("./isolinux/etc/modprobe.d/blacklist.conf", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = -1 ENOTDIR (Not a directory)
Run Code Online (Sandbox Code Playgroud)

我试图取消设置使用的一些环境变量fakeroot

unset …
Run Code Online (Sandbox Code Playgroud)

linux filesystems

5
推荐指数
1
解决办法
979
查看次数

Linux、SSD、BTRFS 和 Trim

我正在运行 Linux 系统(基于 Gentoo),并在 SSD(具有 480GB 网络的东芝 Q300)上安装了 BTRFS 文件系统。我的/etc/fstab样子:

UUID=14cb9b65-... swap           swap    defaults,noatime, 0       0                                                                                                                                                                                                                           
UUID=cd7d93b3-... /              btrfs   defaults,cache,compress=lzo,subvol=@ 0       1                                                                                                                                                                                          
UUID=cd7d93b3-... /home          btrfs   defaults,noatime,space_cache,compress=lzo,subvol=@home 0       2                                                                                                                                                                                      
UUID=cd7d93b3-... /Data          btrfs   defaults,noatime,space_cache,compress=lzo,subvol=@Data 0       2                                                                                                                                                                                     
UUID=cd7d93b3-... /mnt/rootfs    btrfs   defaults,noatime,space_cache,compress=lzo 0       0                                                                                                                                                                                                   
tmpfs             /tmp           tmpfs   defaults,noatime,mode=1777 0       0                                                                                                                                                                                                                   tmpfs             /proc          proc    defaults                   0       0                                                                                                                                                                                                              
tmpfs             /var/log       tmpfs   defaults,noatime,rw,mode=1777 0    0
tmpfs             /var/tmp       tmpfs   defaults,noatime,rw,mode=1777 0    0                                                                                                                                                                                                              
tmpfs             /var/run        tmpfs   defaults,noatime             0    0 
tmpfs             /var/spool      tmpfs   defaults,noatime             0    0 
tmpfs             /var/lock …
Run Code Online (Sandbox Code Playgroud)

ssd trim btrfs

5
推荐指数
1
解决办法
9365
查看次数

通过 HTTPS 下载文件的 curl 命令

我需要从https://file_path. 这是我用于此的 curl 命令:

curl --user user:password "https://file_path?raw" > location
Run Code Online (Sandbox Code Playgroud)
  1. 我希望在上面的“file_path”位置下载文件的真实内容,但不知何故 curl 只返回 HTML 内容。我怎么能解决这个问题?
  2. 当我从 shell 运行此命令时,它会按上述方式运行以下载 HTML 内容。但是当我从 bash 脚本中运行它时,它不会下载任何内容并返回一个空白文件。为什么它会根据运行的位置表现出不同的行为?

linux bash https curl

5
推荐指数
1
解决办法
2万
查看次数

Colorpicker 只选择黑色

我用 Gnome 和 GDM 全新安装了 Arch Linux;我使用集成显卡:Intel® HD Graphics 630。

以前我安装了 Fedora,旧设备有一个旧的 NVidia GPU。我使用一个名为“gpick”的程序从屏幕上选择一种颜色:

工作

它可以正常工作,但是对于新装备,它总是选择黑色:

gpick 只选择黑色

我尝试启动 Kali Linux 并在那里安装 gpick。即使分辨率不是原生的全高清,这也有效。我试过 gcolor2 是一个类似的工具,但它的作用是一样的。

我安装了以下软件包: xf86-video-intel mesa-libgl lib32-mesa-libgl

我该如何修复选择器?

linux arch-linux intel-graphics

5
推荐指数
1
解决办法
1576
查看次数

AES 256 GCM 对其密文是否有任何限制字节序列?

具体来说,我询问密文是否可以包含诸如 之类的字节序列170303,这是一种可能的 TLS 记录标头。

通常,解析 TCP 字节流的应用程序通过解析标头并从标头开始后的第 4 个和第 5 个字节中提取八位位组的长度来分隔 TLS 记录。然后,我假设它向前跳过并尝试在由先前解析的标头计算出的偏移量处读取下一条记录。

我的问题是,TLS 1.3 的 AES 256 GCM 实施是否对密码输出施加了任何限制?RFC 没有提及这一点。是否存在以 header 开头170303xxxx,但也包含170303密文一部分的 TLS 记录?

encryption aes tls

5
推荐指数
2
解决办法
1212
查看次数

Linux:组权限用户有读写但不能互相删除文件

我想在我的 Debian 服务器上创建一个共享文件夹,以便用户可以创建和编辑文件,但不能删除该目录中彼此的文件。

/home/sharedfolder
Run Code Online (Sandbox Code Playgroud)

可以读写地图文件的用户在一个组中: work

我尝试了一些像这样的权限命令,但仍然没有成功:

setfacl -dm u::rwx,g::rwx,o::r /shared/directory
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到我想要的?

linux permissions

4
推荐指数
1
解决办法
7338
查看次数

使用文件名 date 指定特定日期范围内的 Linux tar 文件

我的文件名称以 YYYYMMDD 开头,如下所示:

20160221_143223_Report.csv
20160222_121223_Report.csv
           ...
20160229_141223_Report.csv
20160301_171223_Report.csv
Run Code Online (Sandbox Code Playgroud)

我想要 tar 文件名中包含“Report”且其名称对应于 1-8 天前范围的文件。例如:今天是 3 月 1 日,所以我想 tar 2 月 22 日到 2 月 29 日(不包括今天)的文件。

files=($(ls |<HAS "Report" in filename> and  <WITHIN `date -d "8 days ago" '+%Y%m%d'> )) #output will be filenames that has the word "Report" and  from 22th to 29th FEB
tar cvfz oldfile.tar.gz "${files[@]}"
Run Code Online (Sandbox Code Playgroud)

我应该匹配什么模式?

linux shell date globbing

3
推荐指数
1
解决办法
1万
查看次数

如何避免 dd 或 badblocks 擦除硬盘驱动器的备用扇区?

/!\ 在那里寻找更新 2,问题现在已经回答了一半 /!\

我有时会完全擦除我的硬盘驱动器(不是 SSD);成为他们的样子,ddbadblocks -w盲目地擦拭一切。

问题是,他们也在写入硬盘驱动器的备用扇区,这很糟糕,因为它们都是全新的。因此,如果在擦除过程中确实发生了某些事情(断电、写入错误等),那将杀死一个非常有用的扇区......一无所获。

所以问题是:如何避免ddbadblocks擦除硬盘驱动器的备用扇区?


假设:

  • dd 众所周知,它会盲目地擦除经过它的所有东西。
  • badblocks 已知能够访问未映射的块。

更新 1

dd如果他们没有更换有故障的扇区(显然),肯定无法访问备用扇区。这是由于dd设计方式(Kamil Maciorowski 评论):

可用的逻辑扇区号dd被映射到编号的物理扇区,并且相应的数字最初是相等的。备用物理扇区最初没有分配逻辑编号,因此 dd 无法访问它们。

更新2

主要是系统管理员 - 而不是“接近低级”编码器 (C) -,有人可以看看badblocks' 代码并判断它是否确实访问了备用扇区吗?更准确地说,是否badblocks还考虑了其​​块读/写内的备用扇区?

http://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/tree/misc/badblocks.c

在另一边/方式得到答案;我还知道badblocks维护者Theodore Ts'o 在此处拥有一个超级用户帐户。如果他阅读此更新 2,是否有可能直接回答?

linux hard-drive dd

2
推荐指数
2
解决办法
1608
查看次数

在 Linux 上查找具有功能集的文件

我可以复制/bin/cat/tmp/test运行sudo setcap cap_dac_read_search+ep /tmp/test。然后我将拥有一个可以读取任何其他文件(例如/etc/shadow)的文件。

如何在文件系统中搜索具有功能集的文件,以查看是否已创建任何此类文件?

linux security find

2
推荐指数
1
解决办法
6559
查看次数

R在冯诺依曼架构中代表什么?

我想要一些现代设备的例子,它们等同于冯诺依曼架构中的“R”。

我指的是“EDVAC 报告初稿” PDF 版本第 3 页的第 2.6 节。

computer-architecture

1
推荐指数
1
解决办法
383
查看次数

两个 CPU 还是双核?

两个单核 CPU(在双插槽系统中)是否等同于单个双核处理器?

我们也可以说两个单核 CPU 的处理能力是单个四核系统的一半吗?

我的上述理解基于 Puget 的Dual Processor vs Dual Core文章。

cpu intel-pentium cpu-speed quad-core dual-core

1
推荐指数
1
解决办法
1253
查看次数