Articles of Linux操作系统

不能在bash中的双括号中执行命令

为了保持一致,我试图在所有if语句中使用双括号[[]]。 但是当我要检查我想运行的命令的返回值时,我确实遇到了一个问题。 在testing几种创buildif语句的方法之后,我发现只有没有括号才能执行命令。 以下不起作用: if [[ $command ]] ; then echo "something" fi if [[ $(command) ]] ; then echo "something" fi if [[ ${command} ]] ; then echo "something" fi 上面的代码使if循环成为真,即使命令没有运行。 因为上面的代码不能使用大括号它不能使用这个: [[ $command ]] || echo "failed" 而且它不能在子shell中工作。 以下工作: if $command ; then echo "something" fi if $(command) ; then echo "something" fi […]

停止运行时如何closureslinux电源?

我已经成功地使用了pm_power_off函数指针,使我的自定义Linux电路板通过i2c调用其电源pipe理芯片(closures电源)。 我希望Linux halt命令也可以closures电源。 我怎样才能做到这一点? machine_halt的(ARM)代码没有类似于machine_power_off的pm_power_off的指针。 弓/ ARM /内核/ reboot.c: /* * Halting simply requires that the secondary CPUs stop performing any * activity (executing tasks, handling interrupts). smp_send_stop() * achieves this. */ void machine_halt(void) { local_irq_disable(); smp_send_stop(); local_irq_disable(); while (1); } /* * Power-off simply requires that the secondary CPUs stop performing any * activity […]

如何从Unixterminal的任何path运行.sh脚本?

我知道如何运行我创build的脚本。 但是,我需要通过terminal改变目录并运行我的脚本,这是一个痛苦的问题。 我需要运行到桌面的slowloris脚本,现在改变目录到桌面并运行。 然后我有另一个根; 现在将目录更改为root并运行该目录。 我的问题是: 如何通过从任何pathinput./script来运行任何shell脚本,就像我们从任何path启动Metasploit一样,通过从任何path给予msfconsole 。

为什么共享库的ELF标头指定Linux作为OSABI?

我的Linux系统上的所有标准共享库(Fedora 9)都将ELFOSABI_NONE(0)指定为它们的OSABI。 这很好 – 但是我收到了ELF头文件中给出的OSABI为ELFOSABI_LINUX(3)的共享库。 这对于一个用于Linux系统的共享库来说听起来并不合理,但是对于我的其他所有库来说这是一个不同的值 – 所以当我试图用dlopen()打开这个库时,我的其他库的这个失败,错误“ELF文件操作系统ABI无效”。 我编译了FreeBSD实用程序brandelf.c,并使用它将OSABItypes更改为0,现在该库似乎可以与其他所有程序一起使用。 我只是想知道 – 你为什么认为这个库被标记为ELFOSABI_LINUX? 我猜也许他们在另一个系统上交叉编译,并指定一些gcc标志,导致这个值被设置到ELF头? 我试图实现类似的东西,但无法确定适当的gcc标志或标志。 我想知道可能的原因是什么,因为这个特定的供应商不会做任何事情,没有很多的手,我想能够说“你可能在做X,但这意味着我们必须修改你的库我们接受了他们之后“。

如何传递存储在单个variables中的引号的命令行参数?

我想从shell脚本调用外部应用程序,但是这个shell脚本从一个variables中获取参数(来自其他脚本)。 一切都还好,直到我不必为单个参数使用双引号,而是用空格隔开单词。 这里是我的问题的简化例子(sh_param只是打印所有传递的参数): #!/bin/sh pass() { echo "Result with \$@" ./sh_param $@ echo "Result with \"\$@\"" ./sh_param "$@" echo "Result with \$*" ./sh_param $* echo "Result with \"\$*\"" ./sh_param "$*" } pass '"single param" separate params' 和结果(sh_param只是打印所有传递的参数): Result with $@ Param: "single Param: param" Param: separate Param: params Result with "$@" Param: "single param" separate […]

在Gnome Shell中使用通知的Python程序不起作用

我正在写一个Python程序,它从网页获取信息,并在Gnome Shell的Notification中显示。 我正在使用Arch,所以我想在启动时启动这个程序,如果网页上有任何改变,它会通知我。 这是我的代码: import time import webbrowser import requests from bs4 import BeautifulSoup from gi.repository import Notify, GLib IPS = {'Mobifone': True, 'Viettel': False, 'Vinaphone': False} LINK = "https://id.vtc.vn/tin-tuc/chuyen-muc-49/tin-khuyen-mai.html" def set_ips_state(ips_name, state): global IPS for key in IPS.iterkeys(): if key == ips_name: IPS[key] = state def call_webbrowser(notification, action_name, link): webbrowser.get('firefox').open_new_tab(link) def create_notify(summary, body, link): […]

易失性和caching行为

我读过post C volatilevariables和Cache Memory 但是我很困惑。 题: 操作系统是否会照顾自己 程序员必须以这样的方式编写程序:variables不应该像提到variables一样被放入caching中,如_Uncached。 问候 学习者

如何在shell脚本中获取ec2-describe-instances的标签

我想从命令ec2-describe-instances的结果中提取实例ID和标记,并且想要将结果存储在文本文件中。 结果集给出: 但是我想要标签所有者和cost.centre也被提取kindly指导我如何做到这一点

如果networking坏了,socket发生了什么事?

假设一个简单的networking模型:A已经成功创build了一个到B的TCP连接,并且它们正在像这样彼此通信 A <———-> B 我知道,如果A上的程序死亡(例如核心转储),那么将导致RST数据包到B.因此,任何B的读取尝试都将导致EOF,并且任何B的写入尝试都将导致SIGPIPE。 我对吗? 但是,如果假设networking在A上发生故障(如电缆/路由器故障),那么B的读写尝试会发生什么? 在我的情况下,所有的套接字已被设置为非阻塞。 因此,我不可能检测到networking错误? 顺便说一下,我注意到在socket中有一个选项SO_KEEPALIVE ,可能对我有用http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ 。 但是我想知道如果将探测间隔设置为2〜3秒(默认为75秒),成本是多less? 看起来间隔configuration是全球性的,那么这会影响机器上的所有sockets吗? 最后的问题…说networking已经崩溃了,任何写入尝试都会导致EPIPE一段时间后。 但是,如果不是试图写入,我把这个套接字放入epoll设备,那么会发生什么呢? epoll_wait是否会返回EPOLLHUP或EPOLLERR事件?

在Linux上部署的Rails项目中,CRLF行是否正常?

我有一个Git仓库(原来是CVS,SVN,现在是Git),它包含一个已经在Linux上部署了一段时间的Rails项目。 一切似乎运行良好。 现在我已经转换为git,我发现存储库中的许多文件都包含CRLF行结束符 。 我希望它能够保持一致( LF ),但不会损失具有CRLF行尾的每个文件的编辑历史logging。 你能想到我不能离开这些文件的原因吗? 我似乎记得shell脚本或cron文件存在问题,或者对CRLF没有响应。 另外,我知道所有关于Git选项core.autocrlf和core.safecrlf ,但是有没有办法让它将所有文本文件从CRLF转换为LF结帐(对于Linux端) …即一个core.autolf选项或类似的东西?