Unix & Linux

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

8
检查变量是像Bourne这样的shell中的数组吗?
在像shell这样的Bourne中,它支持数组变量,我们可以使用一些解析来检查变量是否为数组。 下面的所有命令都在运行后运行a=(1 2 3)。 zsh: $ declare -p a typeset -a a a=( 1 2 3 ) bash: $ declare -p a declare -a a='([0]="1" [1]="2" [2]="3")' ksh93: $ typeset -p a typeset -a a=(1 2 3) pdksh 及其派生词: $ typeset -p a set -A a typeset a[0]=1 typeset a[1]=2 …
14 bash  shell  zsh  ksh  yash 

3
为什么内核不能运行init?
我已经在此页面上下载了Raspbian图像。我正在尝试编译可用于在qemu中引导映像的内核。 我从kernel.org下载了Linux内核源代码并运行: make versatile_defconfig make menuconfig 然后,我向内核添加了以下功能: PCI支持(CONFIG_PCI) SCSI设备支持(CONFIG_SCSI) SCSI磁盘支持(CONFIG_BLK_DEV_SD) SYM53C8XX版本2 SCSI支持(CONFIG_SCSI_SYM53C8XX_2) 扩展3(ext3)文件系统(CONFIG_EXT3_FS) 扩展4(ext4)文件系统(CONFIG_EXT4_FS) 我还循环挂载了磁盘映像,并: 注释掉 /etc/ld.so.preload 调整/etc/fstab使用/dev/sda1和/dev/sda2 然后,我卸载映像并尝试使用以下方法启动计算机: qemu-system-arm \ -M versatilepb \ -m 256 \ -kernel linux-4.3/arch/arm/boot/zImage \ -hda 2015-09-24-raspbian-jessie.img \ -serial stdio \ -append "root=/dev/sda2 rootfstype=ext4 rw console=ttyAMA0" 内核能够挂载文件系统,但立即遇到了一些麻烦: Kernel panic - not syncing: Attempted to kill …
14 linux-kernel  arm  qemu  init 

3
'find -exec'如何传递带有空格的文件名?
如果我的目录包含一些名称带有空格的文件,例如 $ ls -1 dir1 file 1 file 2 file 3 我可以将它们全部成功复制到另一个目录,如下所示: $ find dir1 -mindepth 1 -exec cp -t dir2 {} + 但是,的输出find dir1 -mindepth 1包含未转义的空格: $ find dir1 mindepth 1 dir1/file 1 dir1/file 3 dir1/file 3 如果我使用print0而不是print,则输出仍包含未转义的空格: $ find dir1 mindepth 1 -print0 dir1/file 1dir1/file 2dir1/file 3 要使用手动复制这些文件cp,我需要转义空格;但是,似乎当cp的参数来自时,这是不必要的find,而不管我是使用命令+还是\;命令的末尾。 …

1
为什么桌面锁定会在一段时间后停止工作?
xautolock显然正在运行: $ ps wafux | grep [x]autolock user 21410 0.0 0.0 20124 2628 ? S Nov05 0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock 但是,当我尝试锁定它时: $ xautolock -locknow Could not locate a running xautolock. 如果我再旋转一次,xautolock它会起作用: $ xautolock -time 10 …


2
如何从Shell脚本安全地创建和访问临时文件?
我已经读到将输出重定向到其中的一个固定名称文件/tmp可能会带来安全风险,因为如果攻击者(或恶意内容)/tmp/tmpfileformyscript.tmp在运行脚本时注意到已创建文件(即使他没有访问我的文件的权限),脚本),例如,他可以进行符号链接ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp,这会导致我.bashrc在运行脚本时破坏文件。 因此,我可以使用filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename"。 但是,有时我想使用一个tmp文件进行缓存,在这种情况下,我想知道“ tmpfile.tmp。*”是否匹配其中的任何内容/tmp,如果匹配,请使用该文件而不是创建一个新文件。不幸的是test,[ -f filename ]据我所知,等效项不支持文件遍历。 因此,我的问题是双重的: 如何安全地创建一个临时文件?是"predictablename.$RANDOM"可接受的做法还是有更好(更安全,更轻松)的方法? 如何在以后通过检查轻松访问文件和/或确定其存在predictablename?

5
如何调用前一个命令(不执行)以进行更改?
我不记得在不运行命令的情况下可以获得最后一个命令的技巧: 假设我希望能够在按向上箭头键并修改命令时访问命令!1255。那么,调用该命令,使其在命令行中显示但不执行,然后通过向上箭头键进行访问的诀窍是什么呢? 我尝试放置回显,但是在命令之前有一个回显,我不记得如何正确执行它。

2
如何增加Mac OS X上的最大交换空间?
在Mac OS X Yosemite 10.10.5上,当我尝试运行需要分配和使用128 GB内存的计算(这是用C语言编写的命令行程序)时,内核会以极大的偏见杀死我的进程。此控制台日志条目是一个实例的示例: 15/9/25 7:08:40.000 PM内核[0]:低交换:杀死pid 6202(huffgrp) 分配并使用64 GB内存时,该计算可以在合理的时间内正常运行。我的Mac硬盘上有32 GB的RAM和beaucoup空间。我还在另一台具有8 GB RAM的Mac上进行了尝试,在该Mac上64 GB计算也可以正常运行,当然需要更长的时间,但是128 GB计算却以相同的方式被内核杀死。 顺便说一句,malloc()无论我要多少空间,都永远不会返回错误。一旦进程实际使用了过多的内存,内核将终止进程,从而导致大量交换到硬盘驱动器。 因此,似乎存在一个秘密的交换空间限制,介于64 GB和128 GB之间。 我的问题是:如何重新配置​​内核以允许更多交换空间?我找到了一个有前途的文件,/System/Library/LaunchDaemons/com.apple.dynamic_pager.plist但看不到其中的秘密号码。的手册页dynamic_pager说,它所做的只是设置交换文件的名称和位置。该手册页中有较旧的版本,其中记录了-S用于设置所创建交换文件大小的选项。我尝试过,请求160 GB交换文件,但是没有效果。每个交换文件仍为1 GB,该进程仍被内核杀死。

3
使进程在Linux上不可杀灭
我正在使用密码管理器应用程序,出于安全原因,我想启动一个不可杀伤的进程。 而且我不希望该程序成为守护程序,因为我需要从标准输入中读取并写入它。 有没有办法做到这一点?
14 linux  process  kill 

2
删除大单词列表中重复项的最快方法?
我需要对大型单词表进行重复数据删除。我尝试了几个命令,并在此处和此处进行了一些研究,他们解释说,最快的重复数据删除单词列表的方法似乎是使用awk。 awk-> O(n)吗?排序-> O(n log n)? 但是我发现这似乎是不正确的。这是我的测试结果: sort -u input.txt -o output.txt 真实的0m12.446s 用户0m11.347s sys 0m0.906s awk '!x[$0]++' input.txt > output.txt 真实的0m47.221s 用户0m45.419s sys 0m1.260s 因此,使用sort -u快3.7倍。为什么是这样?有没有更快的方法来进行重复数据删除? ***********更新******** 正如有人在评论中指出的那样,可能是我的词表已在某种程度上被排序。为了排除这种可能性,我使用此python脚本生成了两个单词表。 列表1 = 7 Mb 列表2 = 690 Mb 结果AWK: List1 实数0m1.643s 用户0m1.565s sys 0m0.062s List2 实际2m6.918s 用户2m4.499s sys 0m1.345s 结果排序: List1 …
14 bash  awk  performance  sort 

9
如何链接命令“ date -d @xxxxxx”和“ find ./”?
我有名称为时间戳的目录,自1970-01-01起以毫秒为单位: 1439715011728 1439793321429 1439879712214 . . 我需要这样的输出: 1442039711 Sat Sep 12 08:35:11 CEST 2015 1442134211 Sun Sep 13 10:50:11 CEST 2015 1442212521 Mon Sep 14 08:35:21 CEST 2015 . . 我可以通过命令列出所有目录: find ./ -type d | cut -c 3-12 但是我不能将输出放到下一个命令:date -d @xxxxxx并操纵输出。 我怎样才能做到这一点?
14 shell  find  date 



4
按每行字数对行进行排序
给定输入: hello: world foo bar baz bar: baz: bin boop bop fiz bang beep bap: bim bam bop boatkeeper: poughkeepsie 我想将其排序为顶部的大多数单词,至少是末尾的单词,如下所示: baz: bin boop bop fiz bang beep hello: world foo bar baz bap: bim bam bop boatkeeper: poughkeepsie bar: 我将如何使用sort其他工具执行此操作?

5
如何使用awk取绝对值?
如果我有以下两个日期: 2015-09-12,2015-08-13 我需要获取它们之间的天数,我将使用以下代码: awk -F'[-,]' '{print 360*($4-$1)+30*($5-$2)+($6-$3)}' 这段代码的输出-29实际上是29

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.