Unix & Linux

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


1
一个systemctl命令来启动和启用
使用一个命令来启动和启用受systemctl管软件对于在一些脚本中节省几行很有用,这使它们更具美感(这不是一个问题,而是一件不错的事情)。 systemctl两者都有一个命令,start并且enable有一个受其控制的程序systemctl吗?

2
您如何获得任何版本的Linux来查看2018年的MacBook Pro SSD?
我尝试 用Ubuntu 18.04.1和Xubuntu 18.04 nvme_load=yes 代替 quiet ---。 df -h仅导致系统生成的安装和安装介质。包括Debian的固件映像在内的每周直播也无法发现ssd。 我在SSD上找到了更多信息。我在OS X High Sierra的系统概述中找到了此信息。 Apple SSD Controller: APPLE SSD AP1024M: Capacity: 1 TB (1,000,555,581,440 bytes) TRIM Support: Yes Model: APPLE SSD AP1024M Revision: 177.77.7 Serial Number: C02829600M9JPD216 Link Width: x4 Link Speed: 8.0 GT/s Detachable Drive: No BSD Name: disk0 …
23 linux  macintosh  ssd 


2
为什么程序包管理器没有按用户安装和注册?
据我所知,Apt和DNF / Yum是Linux发行版中两种最受欢迎​​的软件包管理方案,它们仅支持系统范围的软件包安装:root拥有的文件,binary进入(/usr)?/s?bin,setting进入/etc等等。 但是,在有多个不具有root特权的个人用户的系统上,经常(即使不是总是)发生了用户想要安装一些可用于该发行版的应用程序或实用程序的情况。他/她可以使用个人安装的安装方式,这种安装方式对许多/所有用户而言并不常见。 现在,要使软件包在安装时具有不同的根目录或一组根目录,以使用户能够做到这一点,似乎并不是一个牵强的想法,甚至是难以置信的复杂想法。管理已安装软件包的用户特定注册表也不是什么问题(无论单个用户是否具有自己的软件包DB)。 那么,为什么没有将这些功能添加到那些常见的软件包管理系统/方案中,是什么原因呢? 注意:这是一个有用的问题,即我要询问的是人们对过去的了解,而不是人们对此功能的看法。

2
OOM杀手无法正常工作,导致操作系统死机
多年来,我操作系统的OOM杀手er无法正常工作,并导致系统死机。 当内存使用率很高时,整个系统趋于“冻结”(实际上:变得非常缓慢)数小时甚至数天,而不是终止进程以释放内存。 我所记录的最长期限是辞职以进行重置之前的7天。 当即将达到OOM时,iowait很高(〜70%),然后变得不可测量。 工具:iotop已经表明,每个程序都从我的硬盘驱动器中以非常高的吞吐量(每数十MB /秒)读取数据。 这些程序正在读什么? -目录层次结构? -可执行代码本身? 我现在不完全是。 [编辑]在撰写此消息时(2017年),我使用的是最新的ArchLinux(4.9.27-1-lts),但几年前已经遇到了这个问题。 我在各种Linux发行版和不同的硬件配置中都遇到了相同的问题。 当前(2019年),我正在使用最新的Debian 9.6(4.9.0),我有16 GB的物理内存,安装了我的操作系统的SSD,没有任何交换分区。 由于我拥有的内存数量很大,因此我不想启用交换分区,因为这只会延迟问题的解决。 同样,使用SSD频繁交换可能会降低磁盘的使用寿命。 顺便说一句,无论是否有交换分区,我都已经尝试过,事实证明,这样做只会延迟问题的解决,而不能解决问题。 对我来说,问题是由于Linux从缓存中删除了必要的数据而导致的,这导致系统死机,因为它每次都必须从硬盘读取所有内容。 我什至不知道Linux是否不会删除正在运行的程序的可执行代码页,这将解释为什么通常不读取大量数据的程序在这种情况下会表现出这种方式。 我已经尝试了几种方法来解决此问题。 一种是设置/proc/sys/vm/min_free_kbytes为1000000(1 GB)。 因为这1 GB应该保持可用,所以我认为Linux将保留此内存以缓存重要数据。 但这没有用。 另外,我想补充一点,即使这可能听起来在理论上很不错,限制了虚拟内存到物理内存的大小尺寸是有用的,通过定义/proc/sys/vm/overcommit_memory到2不端正在我的处境技术上是可行的,因为那种应用由于某些原因,我使用的虚拟内存需要比有效使用的虚拟内存更多。 根据该文件/proc/meminfo,该Commited_AS值通常高于我的系统上物理内存的两倍(16 GB,Commited_AS通常大于32 GB)。 我在/proc/sys/vm/overcommit_memory默认值:上遇到了这个问题0,并且有一段时间我将其定义为:1,因为我更喜欢由OOM杀手杀死的程序,而不是行为不当,因为它们不检查mallocwhen的返回值。分配被拒绝。 当我在IRC上讨论此问题时,我遇到了其他Linux用户,他们也遇到了同样的问题,因此我想很多用户对此感到担忧。 对我来说,这是不可接受的,因为即使Windows可以更好地处理高内存使用情况。 如果您需要更多信息,请提出建议。 文档: https : //en.wikipedia.org/wiki/Thrashing_%28computer_science%29 https://en.wikipedia.org/wiki/Memory_overcommitment https://www.kernel.org/doc/Documentation/sysctl/vm。 txt https://www.kernel.org/doc/Documentation/vm/overcommit-accounting https://lwn.net/Articles/317814/ 他们谈论它: 为什么linux out-of-memory(OOM)杀手不自动运行,而是在sysrq-key上运行? 为什么OOM杀手有时无法杀死资源猪? 预加载OOM杀手 是否可以在强制交换时触发OOM杀手? 如何避免在OOM附近出现高延迟? …


2
如何使用ag在具有某些扩展名的文件中查找文本?
我正在使用ag(The Silver Searcher)版本0.31.0。我可以使用以下命令轻松地在一堆文件中查找字符串: localhost:workspace davea$ ag 'ftp' . 但是,如果我只想扫描带有某些扩展名的文件怎么办?我尝试了这个: localhost:workspace davea$ ag 'ftp' .java ERR: Error stat()ing: .java ERR: Error opening directory .java: No such file or directory 但出现了您在上面看到的错误。
23 files  search  ag 

2
与systemd单位文件中的ExecStartPre条目混淆
我有一个systemd服务,需要在中创建目录/run,但要以非root用户身份运行。从一个博客示例中,我得出了以下解决方案: [Unit] Description=Startup Thing [Service] Type=oneshot ExecStart=/usr/bin/python3 -u /opt/thing/doStartup WorkingDirectory=/opt/thing StandardOutput=journal User=thingUser # Make sure the /run/thing directory exists PermissionsStartOnly=true ExecStartPre=-/bin/mkdir -p /run/thing ExecStartPre=/bin/chmod -R 777 /run/thing [Install] WantedBy=multi-user.target 神奇之处在于注释后的3行。显然,ExecStartPre的将以root身份运行,但是ExecStart将会以指定的用户身份运行。 但是,这导致了三个问题: -前面做什么/bin/mkdir?我不知道为什么它在那里或做什么。 当ExecStartPre一个单位文件中有多个时,它们是否只是按照在单位文件中找到的顺序依次运行?还是其他方法? 这实际上是实现我创建运行目录的目标的最佳技术,以便非root用户可以使用它吗?
23 systemd 

5
即时流压缩不会溢出到硬件资源中吗?
我有200 GB的可用磁盘空间,16 GB的RAM(其中约1 GB被台式机和内核占用)和6 GB的交换空间。 我有一个240 GB的外部SSD,其中70 GB已使用1,其余的则免费,我需要备份到磁盘上。 通常,我会dd if=/dev/sdb of=Desktop/disk.img先将磁盘压缩,然后再压缩它,但首先制作映像不是一个选择,因为这样做会比我需要更多的磁盘空间,即使压缩步骤会导致压缩可用空间,因此最终存档可以轻松放入我的磁盘中。 dd默认情况下会写入STDOUT,并且gzip可以从STDIN读取,因此从理论上讲,我可以进行写入dd if=/dev/sdb | gzip -9 -,但是gzip读取字节所需的时间比dd产生字节的时间长得多。 来自man pipe: 写入管道写入端的数据由内核缓冲,直到从管道读取端读取数据为止。 我将一个|虚拟的管道想象成一个真实的管道-一个应用程序将数据放入管道,另一个应用程序将数据尽快从管道队列中取出。 当左侧的程序比管道的另一端希望更快地写入更多数据时,怎么办?它会导致过多的内存使用或交换使用,还是内核会尝试在磁盘上创建FIFO,从而填满磁盘?还是SIGPIPE Broken pipe如果缓冲区太大会失败? 基本上,这可以归结为两个问题: 将更多数据放入管道中比一次读取更多的含义和结果是什么? 将数据流压缩到磁盘而不将整个未压缩的数据流放在磁盘上的可靠方法是什么? 注意1:由于碎片等原因,我不能完全复制前70个已使用的GB并期望得到一个工作系统或文件系统,这需要完整的内容。
23 pipe  dd  compression  gzip 


1
Gentoo Linux GPG对通过参数传递的文件进行了正确加密,但是从标准输入中读取时会抛出“设备不正确的ioctl”
我正在运行带有内核4.1.7-hardened-r1的Gentoo Hardened,并且尝试使用GPG从SSH打开的Shell会话中使用GPG加密文件,并DISPLAY禁用该变量,以便使用pinentry-curses进行密码提示。使用gpg -o file.gpg --symmetric file我可以加密就可以了。使用pv file | gpg -o file.gpg --symmetric我得到以下错误信息: gpg-agent[30745]: command get_passphrase failed: Inappropriate ioctl for device
23 ssh  gentoo  gpg  gpg-agent 

1
如何将日期和时间放在文件名中?
我正在尝试执行命令,并希望将日期和时间放在输出文件名中。 这是我要运行的示例命令。 md5sum /etc/mtab > 2016_4_25_10_30_AM.log 日期时间格式可以是带下划线的任何有意义的内容。如果无法使用AM和PM,则即使是UTC。

3
'sort -u'对于大型文件的可伸缩性
'sort -u'的合理可伸缩性限制是多少?(以“行长”,“行数”,“文件总大小”为单位?) 对于超出“行数”维的文件,Unix的替代方案是什么?(当然,我可以轻松实现一个,但是我想知道是否可以用很少的标准Linux命令来完成某些工作?)
23 sort 

2
使用WPA-EAP和MSCHAP-v2将密码隐藏在wpa_supplicant.conf中
我的wpa_supplicant.conf样子是这样的: network={ ssid="Some name" scan_ssid=1 key_mgmt=WPA-EAP eap=PEAP identity="my-user-id" password="(clear text password here)" ca_cert="/usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt" phase2="auth=MSCHAPV2" } 通过WPA-EAP和MSCHAP-v2的这种特定组合,是否有办法不在此配置文件中明确包含我的密码? ChangeLog似乎声称这是可行的(自2005年以来!): * added support for storing EAP user password as NtPasswordHash instead of plaintext password when using MSCHAP or MSCHAPv2 for authentication (hash:<16-octet hex value>); added nt_password_hash tool for hashing password to generate NtPasswordHash …

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.