Unix & Linux

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

7
我怎样才能使脚本数到五?
我试图制作一个非常简单的bash脚本,以列出375和3500之间的所有5的倍数(375、380、385 ...)。我尝试但没有起作用的一件事是: for i in {375..3500} do echo $i (($i += 5)) done 一段时间后,我放弃了,并在15秒钟内用BASIC编写了此代码: 10 count = 375 20 print count 30 count = count+5 40 if count < 3500 then goto 20 如何在bash脚本中制作BASIC程序?
10 bash  shell  scripting 

4
如何隐藏肉桂中的ALT + TAB的窗口?
我的Linux Mint框中装有Virtualbox,Virtualbox始终处于运行状态,因此当我想使用Alt+ 更改应用程序时Tab,由于其始终在“任务列表”中,因此始终将其重定向到Virtualbox窗口。 我想知道如何从Alt+ Tab分页跳过窗口或程序。通过与Compiz混在一起,可以在MATE或Unity中使用,但是我想知道如何从Cinnamon 的Alt+ Tab列表中删除我的Virtualbox任务。 我的系统托盘中有virtualbox小程序,因此我想隐藏窗口,即从任务栏中删除它。 有没有什么方法可以从Alt+ Tab任务列表中删除窗口,或者从Cinnamon的任务栏中删除窗口?

1
内核如何防止恶意程序读取所有物理RAM?
如果我编写了一个尝试在每个可能的地址读取内存的程序,并且在“完整”的Unix上运行该程序,则它将无法访问所有物理RAM。但是操作系统如何阻止它呢? 我对小型CPU体系结构比较熟悉,在该体系结构中,任何汇编代码都可以访问所有内容。我不了解程序(内核)如何检测到此类恶意操作。
10 kernel  security 

2
Shell名称空间
有没有一种方法可以source将shell脚本导入命名空间,最好是bash shell脚本,但是如果其他shell具有此功能而bash没有,我会研究它们。 我的意思是,例如,“为所有已定义的符号添加前缀,以免它们与已定义的符号(变量名,函数名,别名)冲突”之类的东西,或防止名称冲突的任何其他功能。 如果有一个可以在source时间上命名空间(NodeJS样式)的解决方案,那将是最好的。 示例代码: $ echo 'hi(){ echo Hello, world; }' > english.sh $ echo 'hi(){ echo Ahoj, světe; }' > czech.sh $ . english.sh $ hi #=> Hello, world $ . czech.sh #bash doesn't even warn me that `hi` is being overwritten here $ hi #=> Ahoj, světe …
10 shell 

6
是否可以将“ then”替换为括号?
我首先学习了如何用一种C语言进行编码,以及如何使用 if ( code ) then code fi 这使我很难阅读我的代码(不要问为什么)。有替代品then吗? 像这样: if ( code ) { code } fi

5
找到 xargs shasum(过早)创建校验和文件本身的校验和,并且在检查时失败
我的问题(在带有的脚本中#!/bin/sh)如下:我尝试出于归档目的对目录中的所有文件进行校验和。具有所有文件名的校验和(在我的情况下为sha1)文件应位于同一目录中。假设我们有一个~/test包含文件f1和的目录f2。 mkdir ~/test cd ~/test echo "hello" > f1 echo "world" > f2 现在用 find -maxdepth 1 -type f -printf '%P\n' | xargs shasum 完全符合我的要求,它仅列出当前目录的所有文件并计算sha1和(maxdepth可能在以后更改)。STDOUT上的输出为: f572d396fae9206628714fb2ce00f72e94f2258f f1 9591818c07e900db7e1e0bc4b884c945e6a61b24 f2 不幸的是,当尝试使用 find -maxdepth 1 -type f -printf '%P\n' | xargs shasum > sums.sha1 生成的文件将显示自身的校验和: da39a3ee5e6b4b0d3255bfef95601890afd80709 sums.sha1 f572d396fae9206628714fb2ce00f72e94f2258f f1 9591818c07e900db7e1e0bc4b884c945e6a61b24 f2 并因此在以后失败shasum …
10 find  xargs  checksum  hashsum 

1
是否可以知道剪贴板的来源(应用程序)?
我注意到有时如果关闭了源应用程序(从中复制了内容的应用程序),剪贴板中的内容将不可用。 这使我想知道是否有可能知道源应用程序是什么(例如通过PID)。 为什么?如果源应用程序是终端,则在复制的内容是相对路径的情况下,我想找到终端的工作目录,以构建文件的完整路径。 仅供参考,我目前正在使用xclip确定剪贴板内容,例如 xclip -selection primary -t STRING -o 2> /dev/null
10 x11  process  clipboard  xclip 


2
高IO等待-如何确定根本原因?
我在两个专用服务器上有一个MySQL实例。一个用于生产,另一个用于测试平台。 这两个服务器几乎相同,唯一的区别是RAID控制器和虚拟卷(HD相同)。在生产环境中,有专用的硬件RAID控制器和RAID 10卷。另一方面,RAID控制器似乎是软件(Lenovo ThinkServer RAID 110i),并且卷是RAID 5。 我们注意到在MySQL提交期间,我们的iowait很高: while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done root 26661 0.0 0.0 0 0 ? D Jun09 5:41 \_ [jbd2/dm-14-8] root 26691 0.0 0.0 0 0 ? D Jun09 0:57 \_ [jbd2/dm-10-8] Thu Jun 18 13:49:37 …

1
用全局模式定义的变量替换Bash
以下示例说明了该问题。为什么FILENAME在使用替换时回显并被视为图案时打印正确? #!/bin/bash FILEPATH_WITH_GLOB="/home/user/file_*" FILENAME=$(basename "$FILEPATH_WITH_GLOB") echo $FILENAME #file_1234 echo ${FILENAME:1:5} #ile_* <---why is this not ile_1

1
OS X,bash:较少用于打开文件描述符,而cat不
在我正在使用的bash脚本中(必须在Ubuntu和OS X上运行),我需要将数百个命令的输出重定向到文件。 与其附加&>...到所有这些,不如做 exec 9>&1 exec 5<>/tmp/some-file.txt exec 1>&5 到目前为止,一切顺利,但是在所有这些命令的中间,我需要读取到目前为止已编写的所有内容,同时保持文件描述符处于打开状态。 现在,在Ubuntu上,我可以做 cat /dev/fd/5 要么 tee </dev/fd/5 但是在OS X上,什么也没打印(命令立即退出)。 但是,使用lessI可以看到两者的文件内容。 我可以通过使用以下命令来达到上述效果(在两个操作系统上均有效) less /dev/fd/5 | tee 但这似乎是一个hack。 那么,为什么less显然可以看到catOS X上无法显示的内容?(或者所有BSD后代都受到影响吗?) 还是我做错了什么?

5
cron作业上的nginx logrotate错误
我在Digital Ocean VPS上运行Ubuntu 14.04 LTS和Nginx,偶尔收到这些有关cron作业失败的电子邮件: 学科 Cron测试-x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily) 电子邮件的正文为: /etc/cron.daily/logrotate:错误:为/var/log/nginx/*.log运行部分运行共享的postrotate脚本时出错:/etc/cron.daily/logrotate退出,返回码为1 关于如何解决此问题有任何想法吗? 更新: /var/log/nginx/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi …
10 ubuntu  cron  nginx  logrotate 


2
与嵌入式和外部initramfs一起执行init的区别?
我正在构建一个非常小的Linux系统,它仅由内核(v4.1-rc5)和一个填充有busybox(v1.23.2)的initramfs组成。它在大多数情况下都能正常工作,但是无论我使用的是嵌入式initramfs还是外部的initramfs,我都在/ init中观察到命令执行行为的差异。 / init脚本是: #!/bin/sh dmesg -n 1 mount -t devtmpfs none /dev mount -t sysfs none /sys mount -t proc none /proc echo "Welcome" while true do setsid cttyhack /bin/sh done 然后,我将内核.config中的CONFIG_INITRAMFS_SOURCE选项设置为包含initramfs所有文件夹的目录,或者运行 find . | cpio -H newc -o | gzip > ../rootfs.cpio.gz 建立它。 然后,无论是否设置CONFIG_INITRAMFS_SOURCE,编译内核时,最终都会遇到系统的两个变体: 嵌入了initramfs的bzImage bzImage + rootfs.cpio.gz(外部initramfs) …
10 linux  kernel  boot  initramfs 

1
GParted LiveCD无法启动
我在VirtualBox(LinuxMint 17.1)中安装了VM。但是我正在尝试引导到GParted,以便可以调整分区的大小。我正在使用gparted-live-0.22.0-2-amd64.iso,它可以正常启动。我已经尝试了GRUB以及后一个菜单中的每个选项,但无法超越此屏幕: 在我进入键盘映射选择屏幕之前,该屏幕也会在启动期间出现: 虚拟机配置在这里

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.