Unix & Linux

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

3
安排每月的最后一天
我从一条指令中了解到如何在一个月的最后一天安排脚本: 注意: 精明的读者可能会想知道如何设置命令才能在每月的最后一天执行,因为您无法将dayofmonth值设置为覆盖每个月。这个问题困扰着Linux和Unix程序员,并催生了许多不同的解决方案。一种常见的方法是添加一个if-then语句,该语句使用date命令检查明天的日期是否为01: 00 12 * * * if [`date +%d -d tomorrow` = 01 ] ; then ; command1 该命令每天中午12点进行检查,以查看是否是该月的最后一天,如果是,则cron运行命令。 [`date +%d -d tomorrow` = 01 ]工作如何? 陈述正确then; command1吗?
10 shell-script  cron  date  test 

2
为什么在现代Linux上,默认堆栈大小如此之大-8MB(在某些发行版中甚至为10MB)
例如,在OSX上,它甚至不到512k。 有没有建议的大小,请记住,该应用程序不使用递归并且不分配很多堆栈变量? 我知道这个问题太广泛了,它很大程度上取决于用法,但是我仍然想问,因为我想知道这背后是否存在一些隐藏的/内部的/系统的原因。 我想知道,因为我打算在我的应用程序中将堆栈大小更改为512 KiB-听起来仍然很大,但它比8MiB小得多-并会导致进程的虚拟内存显着减少,因为我有很多线程(I / O)。 我也知道这并没有真正的伤害,请在此处进行详细说明:pthreads的默认堆栈大小

2
您能在这段bash代码中为我解释这三件事吗?
我有一个function在我的.bashrc文件。我知道它的作用,它可以增加X个目录cd 这里是: up() { local d="" limit=$1 for ((i=1 ; i <= limit ; i++)) do d=$d/.. done d=$(echo $d | sed 's/^\///') if [ -z "$d" ]; then d=.. fi cd $d } 但是您能为我解释这三件事吗? d=$d/.. sed 's/^\///' d=.. 为什么不这样做: up() { limit=$1 for ((i=1 ; i <= limit ; …


3
如何在bash脚本中为unicode grep
if grep -q "�" out.txt then echo "working" else cat out.txt fi 基本上,如果文件“ out.txt”在文件中的任何位置都包含“ ...”,我希望它回显“工作”,并且如果文件“ out.txt”在文件中的任何位置均不包含“。”,那么我想它来猫out.txt 编辑:所以这就是我在做什么。我试图蛮力的openssl解密。 openssl enc成功返回0,否则返回非零。注意:您会得到误报,因为AES / CBC只能根据正确的填充来确定“解密是否有效”。因此,该文件将解密,但它不是正确的密码,因此其中会出现乱码。乱码中的常见字符是“。”。因此,如果输出包含“ ...”,我希望do循环继续进行。 这是我的git链接https://github.com/Raphaeangelo/OpenSSLCracker 这是脚本 while read line do openssl aes-256-cbc -d -a -in $1 -pass pass:$line -out out.txt 2>out.txt >/dev/null && printf "==================================================\n" if grep -q "�" out.txt then : …

2
为什么apt-key手册页建议不要使用其add命令?
apt-key的Ubuntu手册页包含以下有关以下内容的注释apt-key add: 注意:代替使用此命令,应将密钥环直接放置在/etc/apt/trusted.gpg.d/目录中,并使用描述性名称,并以“ gpg”或“ asc”作为文件扩展名。 我认为我从未在其他任何地方看到过此建议。托管自己的存储库的大多数项目都说要下载其密钥文件并使用进行添加apt-key。 该建议背后的动机是什么? 这是Ubuntu-ism,还是适用于任何基于APT的发行版?
10 apt 

1
rm -f的替代选项
我想运行一个命令行: cd ~/www/tmp/; rm -P 2* 但是如果没有以2开头的文件,我会报错。 您可能认为我想使用-f,但是: -f Attempt to remove the files without prompting for confirmation, regardless of the file's permissions. If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error. 而且我确实在乎文件权限-如果发生奇怪的事情,我希望使用命令中止。我只想抑制“不存在”错误。 我查看了一些其他带有“ rm错误”的问题,发现这两个(有点)相关: 删除文件和目录的名称。无此文件或目录 但是,我不了解该问题答案中的所有内容,也不知道我需要它吗? touch这个问题的黑客建议: …
10 command-line  rm 

2
tr使用范围的奇怪行为
我有一台使用tr时表现出奇怪行为的特定服务器。这是工作服务器上的示例: -bash-3.2$ echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-z] 1234567890 -bash-3.2$ 这对我来说很有意义。 但是,这来自“特殊”服务器: [root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-z] abcdefghijklmnpqrstuvwxyz1234567890 如您所见,删除所有小写字符失败。但是,它已删除字母“ o” 有趣的部分是以下两个示例,这些示例对我来说毫无意义: [root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-n] opqrstuvwxyz1234567890 [root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-o] abcdefghijklmnpqrstuvwxyz1234567890 [root@host~]# (同样,在上一个示例中删除了“ o”) 有人知道这里发生了什么吗?我无法在正在使用的任何其他Linux盒上进行复制。


2
如何使用linux find命令打印内容而不是文件名?
我有成千上万个这样的unl文件cbs_cdr_vou_20180624_603_126_239457.unl。我想使用以下命令从这些文件中打印所有行。但它只给我文件名。我不需要文件名,我只需要这些文件中的内容。 find -type f -name 'cbs_cdr_vou_20180615*.unl' > /home/fifa/cbs/test.txt 电流输出: ./cbs_cdr_vou_20180615_603_129_152023.unl ./cbs_cdr_vou_20180615_603_128_219001.unl ./cbs_cdr_vou_20180615_602_113_215712.unl ./cbs_cdr_vou_20180615_602_120_160466.unl ./cbs_cdr_vou_20180615_603_125_174428.unl ./cbs_cdr_vou_20180615_601_101_152369.unl ./cbs_cdr_vou_20180615_603_133_193306.unl 预期产量: 8801865252020|200200|20180613100325|; 8801837463298|200200|20180613111209|; 8801845136955|200200|20180613133708|; 8801845205889|200200|20180613141140|; 8801837612072|200200|20180613141525|; 8801877103875|200200|20180613183008|; 8801877167964|200200|20180613191607|; 8801845437651|200200|20180613200415|; 8801845437651|200200|20180613221625|; 8801839460670|200200|20180613235936|; 请注意,对于cat命令,我会收到错误消息-bash: /bin/logger: Argument list too long,这就是为什么要使用它find而不是catcommand的原因。
10 linux  find  cat 

3
命名管道,文件描述符和EOF
两个窗口,同一用户,带有bash提示。在window-1中输入: $ mkfifo f; exec <f 因此,bash现在正尝试从文件描述符0中读取文件,该文件描述符0映射到命名管道f。在window-2中输入: $ echo ls > f 现在window-1打印一个ls,然后外壳消失。为什么? 下一个实验:使用再次打开window-1 exec <f。在window-2中输入: $ exec 3>f $ echo ls >&3 在上面的第一行之后,window-1唤醒并显示提示。为什么?在上面的第二行之后,window-1打印ls输出,并且shell保持活动状态。为什么?实际上,现在在window-2中,echo ls > f不会关闭window-1外壳。 答案必须与window-2中引用命名管道的文件描述符3 的存在有关!

1
具有组权限,但无法创建文件
我在玩pi3B时发现了一件奇怪的事情。我想创建一个文件/sys/class/gpio(只是在四处闲逛,没有特殊原因),但是我得到了Permission Denied。以下是一些信息。 pi@raspberrypi:/sys/class/gpio $ groups pi adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi pi@raspberrypi:/sys/class/gpio $ ls -ld . drwxrwx--- 2 root gpio 0 May 6 00:28 . pi@raspberrypi:/sys/class/gpio $ touch somefile touch: cannot touch 'somefile': Permission denied 如您所见,我属于gpio组,该组具有directory的写许可权/sys/class/gpio。 所以问题是,/sys/class/gpio即使我所属的组具有权限,为什么也无法创建新文件。 将pi用户添加到组gpio后,我尝试重新登录并重新启动,而这是几天前的事。 操作系统:树莓拉伸 试过了 newgrp

3
当给出实际上不需要`sudo`的命令时,sudo如何决定是否要求输入密码?
当应用sudo到实际上不需要的命令时sudo, 有时它不要求我输入密码。例如我的$HOME,sudo ls。 但是我记得它对其他命令有用,尽管我忘记了哪个命令。 所以我想知道sudo当给出实际上不需要的命令时,如何决定是否要求输入密码sudo?是否有规定的/etc/sudoers规定? 我的真正问题是,当我使用时du,有时会显示某些目录的“权限被拒绝”,有时不是,可能是因为我对某些目录没有权限?我申请sudo到du的过失,以为我会被要求输入密码不论,但实际上不是我自己的目录。
10 sudo  password 

2
SunOS上linux上的find命令是否有替代方法?
find与findSunOS或Solaris上的命令相比,Linux上的命令具有很多选项。 我想使用这样的find命令: find data/ -type f -name "temp*" -printf "%TY-%Tm-%Td %f\n" | sort -r 它在Linux机器上可以很好地工作,但是在-printfSunOS机器上没有相同的命令。我想以"%TY-%Tm-%Td %f\n"格式自定义输出。 请提出SunOS的其他替代方案。

5
awk / sed / perl一线+如何仅打印json文件中的属性行
如何仅打印json文件中的属性行 json文件的示例 { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "items" : [ { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "tag" : "version1527250007610", "type" : "kafka-env", "version" : 8, "Config" : { "cluster_name" : "HDP", "stack_id" : "HDP-2.6" }, "properties" : { "content" : "\n#!/bin/bash\n\n# Set KAFKA specific environment variables here.\n\n# The java implementation to use.\nexport JAVA_HOME={{java64_home}}\nexport …
10 awk  sed  perl  json  jq 

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.