Articles of Linux操作系统

查找哪个驱动器对应于Linux中的哪个USB大容量存储设备

我有几个USB大容量存储闪存驱动器连接到Ubuntu Linux计算机(Ubuntu 10.04.1,内核2.6.32-25-386),我需要以编程方式分开(如果可能的话,从bash中分离出来,但我不害怕编译) – 我需要find哪个块设备对应哪个物理设备(例如/dev/sdb1 – >设备在USB端口1;在我的情况下,一个设备〜一个卷)。 换句话说,我知道我有三个硬件设备插入USB端口, 它们中的每一个都作为USB大容量存储设备(如lsusb所示)显示在系统中,作为块设备( /dev/sdb1 )创build,并由UUID( /media/1234-5678 )自动挂接。 USB device block device mountpoint USB device in port 2.2 <-> /dev/sdb1 <-> /media/1234-5678 我没有试图find块设备和挂载点之间的关系; 我试图find块设备和USB设备之间的关系,有没有办法? 为什么? 在磁盘上会有一些写操作,并有不可预知的完成时间。 我需要给操作员一些指示,例如“现在可以移除端口2(这是从左边的第二个)的磁盘”。 我发现哪个物理端口对应于该特定机器上的哪个端口号,并且从挂载点查找块设备是简单的; 现在我卡住逻辑USB端口映射到块设备。 我可以看到与lsusb的磁盘: Bus 001 Device 058: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device Bus 001 Device 060: ID 067b:2517 Prolific Technology, […]

如何克服Linux上的ksh与安装在AIX / Solaris / HPUX上的不兼容?

我参与了将包含几百个ksh脚本的系统从AIX,Solaris和HPUX移植到Linux的过程。 我已经遇到了ksh在两个系统上行为方式的差异: #!/bin/ksh flag=false echo "a\nb" | while read x do flag=true done echo "flag = ${flag}" exit 0 在AIX,Solaris和HPUX上,Linux上的输出为“flag = true”,输出为“flag = false”。 我的问题是: 是否有一个环境variables,我可以设置让Linux的ksh行为像其他奥斯的'? 否则: 在Linux的ksh上有没有一个选项来获得所需的行为? 否则: 有一个ksh实现可用于Linux与所需的行为? 其他说明: 在AIX上,Solaris和HPUX ksh是ksh88的变种。 在Linux上,ksh是公有域ksh(pdksh) 在AIX,Solaris和HPUX上,dtksh和ksh93(我安装了它们)与ksh一致 我有权访问的Windows NT系统:Cygwin和MKS NT,与Linux一致。 在AIX,Solaris和Linux上,bash是一致的,给出了不正确的(从我的angular度来看)“flag = false”的结果。 下表总结了系统的问题: uname -s uname -r which ksh ksh version flag = ======== ======== ========= […]

如何在一行命令中将密码应用到sudo并执行su root?

我创build了一个名为samX的用户,具有root权限(在visudo附加了“samX ALL =(ALL:ALL)ALL”)。 我试图将密码应用到sudo ,然后su root并在一行命令中依次执行whoami 。 我目前的命令有点如下,但它抱怨错误: sudo:su root; whoami:命令未find echo 'CbEYKFKt' | sudo -S 'su root; whoami' 其中“CbEYKFKt”是用户samX的密码。 有没有解决这个问题? 非常感谢。

Bash – 如何把每一行放在引号内

我想把每一行放在引号内,比如: abcdefg hijklmn opqrst 转换成: "abcdefg" "hijklmn" "opqrst" 如何在Bash shell脚本中做到这一点?

Linux:pipe入Python(ncurses)脚本,stdin和termios

显然,这几乎是“ 糟糕的pipe道filedescriptor从Python中的标准input读取时重复- Stack Overflow ”; 不过,我认为这个情况稍微复杂一些( 而且这不是Windows特有的,因为这个线程的结论是 )。 我正在尝试在Python中使用一个简单的脚本:我想为脚本提供input – 通过命令行参数; 或者通过将一个string“pipe”到这个脚本中 – 并使脚本使用cursesterminal接口显示这个inputstring。 完整的脚本,在这里被称为testcurses.py ,如下所示。 问题是,每当我尝试实际的pipe道,似乎搞乱标准input, curses窗口永远不会显示。 这是一个terminal输出: ## CASE 1: THROUGH COMMAND LINE ARGUMENT (arg being stdin): ## $ ./testcurses.py – ['-'] 1 stdout/stdin (obj): <open file '<stdout>', mode 'w' at 0xb77dc078> <open file '<stdin>', mode 'r' at 0xb77dc020> stdout/stdin (fn): 1 0 […]

如何在共享库(.so)中使用共享库的同一进程的实例共享全局variables?

我有一个共享库(.so),在执行应用程序之前预先加载,并且在应用程序使用的共享库中有一些全局数据结构。 应用程序可以使用fork()创build其他进程,这些进程可以更新共享库中的全局数据结构。 我希望对所有stream程中的这些全球数据结构保持一致的看法。 有没有什么办法可以在Linux中完成? 我曾尝试使用shm_ *调用和mmap()将共享库的全局数据映射到共享段,但它不起作用。

Unix fork()系统调用什么时候运行?

void child(int pid){ printf("Child PID:%d\n",pid); exit(0); } void parent(int pid){ printf("Parent PID:%d\n",pid); exit(0); } void init(){ printf("Init\n");//runs before the fork } int main(){ init();//only runs for parent ie runs once printf("pre fork()");// but this runs for both ie runs twice //why??? int pid = fork(); if(pid == 0){ child(pid); //run child process }else{ parent(pid);//run parent […]

从Java程序打开浏览器窗口

题 我有一个用Java编写的应用程序。 它被devise为独立运行在一个Linux机器上。 我正试图产生一个新的Firefox窗口。 但是, Firefox永远不会打开。 它总是有一个shell退出代码1.我可以用gnome-terminal运行这个相同的代码,并打开罚款。 背景 所以,这里是它的初始化过程: 启动X“Xorg:1 -br -terminate -dpms -quiet vt7” 启动窗口pipe理器“metacity –display =:1 – replace” configuration资源“xrdb -merge / etc / X11 / Xresources” 成为守护进程,并从控制terminal断开 一旦程序运行,用户可以点击一个button,产生一个Firefox窗口。 这是我的代码来做到这一点。 记住X正在显示中:1。 码 public boolean openBrowser() { try { Process oProc = Runtime.getRuntime().exec( "/usr/bin/firefox –display=:1" ); int bExit = oProc.waitFor(); // This is always 1 […]

zsh菜单完成导致zle重置提示后出现问题

我在我的.zshrc中有以下代码: TMOUT=1 TRAPALRM() { zle reset-prompt } 触发菜单完成后,菜单中的所有项目,除了突出显示的一个在TRAPALRM触发之后消失,以及在菜单zsh segvaults中在短时间后继续导航 有没有解决方法或解决方法? 编辑:zsh版本是在Linux Mint 17上的5.0.2 编辑:我在Gentoo的zsh版本5.0.7上观察同样的事情

Linux中这个$ PATH是什么,以及如何修改它

我在Linux上有这个$ PATH的几个问题。 我知道它告诉shell要search可执行文件的目录,所以: 这是什么意思一个环境variables? 如何改变它的path? 并build议改变它? 如果我改变它有什么后果?