Unix & Linux

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

1
不要等到返回Shell重定向
我想将脚本(Python或任何其他类型)的输出重定向到文件。易于使用>或>>。 但是使用这两个输出似乎仅在脚本返回后才写入文件中。从标准输出重定向后,是否可以将输出立即写入文件中?有点像可以访问以读取脚本最后步骤的日志文件。 提前致谢。

1
dpkg dh_install:从构建目录而不是从debian / tmp目录复制文件吗?
假设我有一个如下的debian软件包: project_pkg/ .git project_0.0-1/ debian/ install ... project (git submodule with tagged commit) 使用以下安装文件: // .../debian/install #!/usr/bin/env bash find $(pwd)/project/path/to/binaries -type f -executable -printf "$(pwd)/project/path/to/binaries/%f usr/bin\n" 在项目有一个make入口点的地方,make -C project build例如生成我需要打包的所有必需文件。 整个包装过程中的制造/构建组件现在都可以正常工作。但是,理想情况下,我可以从安装文件夹中找到需要安装的所有必需文件。 我现在有一个解决方案,其中涉及将项目中的二进制文件debian/tmp/从外部/debian或从复制到/debian/rules。 但是dh_install,如果有某种方法,我也可以轻松地将设置为从项目中获取文件。 A)有没有办法dh_install从专案中撷取档案, B)是否简单地运行两个find命令并将二进制文件复制到debian/tmpdir中? C)我是否应该对其进行破解,并printf在install find命令中添加前缀../..

1
根据日期/时间从目录子集中复制文件
我正在教一个班级,其中(〜80)个学生正在提交可以通过webdav访问的作业,该作业由学生组织在由其唯一标识符命名的目录中。 这些学生分为两组,分别在一周的不同日期提交作业。我想创建一个bash脚本,以将每个学生子集的文件自动下载到本地目录中。 我不知道该怎么办的是以下内容: 通过名称选择文件夹的特定子集以从中复制文件。 根据评论进行编辑:我连接的webdav服务器有80个由学生命名的目录,这80个目录由两组学生组成。 我想从每个组的目录中选择文件,即Group1包含目录StudentA/ StudentC/ StudentD/。第2组将包含目录StudentB/ StudentE/ StudentF/。 指定要复制的文件的开始日期/时间。结束日期/时间对我很有用,因为我扣除了以后的作业。 在这些方面的任何帮助将不胜感激。

3
提取与另一个文件中的单词列表匹配的行
我有以下行的文件1: ATM 1434.972183 BMPR2 10762.78192 BMPR2 10762.78192 BMPR2 1469.14535 BMPR2 1469.14535 BMPR2 1738.479639 BMS1 4907.841667 BMS1 4907.841667 BMS1 880.4532628 BMS1 880.4532628 BMS1P17 1249.75 BMS1P17 1249.75 BMS1P17 1606.821429 BMS1P17 1606.821429 BMS1P17 1666.333333 BMS1P17 1666.333333 BMS1P17 2108.460317 BMS1P17 2108 文件2包含单词列表: ATM BMS1 因此,输出将如下所示: ATM 1434.972183 BMS1 4907.841667 BMS1 4907.841667 BMS1 880.4532628 BMS1 …

2
如何备份所有内容?
如何使用整个系统创建备份映像,该映像将通过SSH保存在LAN计算机上?如果以后发生任何问题,我希望能够在几分钟之内还原整个系统,就像还原备份之前一样。是否有Live CD可以“将备份映像保存到ssh:// ...”和“从备份映像ssh:// ...还原”?

1
为什么我的电池信息显示在其他操作系统和发行版中而不显示?
我的电池信息已消失并重新出现了大约一个月。我以为也许我错过了一些自定义版本的重要软件包,所以最近我重新安装了Manjora i3(部分是为了解决此问题),今天早上我i3status说“没有电池”。我检查了更新,其中有很多。运行这些更新后,我重新启动了笔记本电脑。仍然没有电池残留物。 [3953(sir)/home/sir] upower -e /org/freedesktop/UPower/devices/line_power_ADP1 /org/freedesktop/UPower/devices/DisplayDevice [3953(sir)/home/sir] upower -i /org/freedesktop/UPower/devices/line_power_ADP1 native-path: ADP1 power supply: yes updated: Sun 14 Jan 2018 03:54:37 PM EST (1107 seconds ago) has history: no has statistics: no line-power warning-level: none online: no icon-name: 'ac-adapter-symbolic' [3953(sir)/home/sir] upower -i /org/freedesktop/UPower/devices/DisplayDevice power supply: no updated: Sun 14 …

2
Shell脚本创建一个文件并追加结果
以下脚本将每1小时运行一次。脚本每次运行都会创建一个新文件。 第一个回显将推送报头,而for循环将推送结果。 但是我还想要的是: 头文件每天应该只进入文件一次,并且应该继续将for循环结果附加到同一文件中。 每天应该只创建一个CSV文件。 它应该删除所有名称为result_ something的旧文件。 我有的代码 echo "collectiontime,hostname,diskusage,directory" > /home/result_$CURR_TIME_EPOCH.csv for i in /data01 /opt /opt/splunk /opt/splunk/var/lib/splunk/kvstore /opt/splunk/var/run/searchpeers /opt/splunk/var/run do T=`sudo du -sh $i 2> /dev/null` if [ $? -eq 0 ]; then T=`echo $T | awk '{print $1","$2}'` echo `date +%s`,$HOSTNAME,$T fi done >> /home/result_$CURR_TIME_EPOCH.csv

1
取消ld.conf.so.d库路径解析的优先级
从一个单独的问题以及有关该主题的其他文章看来ld.so.conf.d,在通过/lib或提供的任何库之前,总是会解决定义的其他库路径(即,在名称冲突的情况下,例如覆盖系统库时)/usr/lib。 是否有可能通过ld.so.conf.d某种机制创建一个系统范围的路径,在该路径下可以以最低/最新的分辨率级别来解析库?例如,我希望库/ParanoidAndroid/可以被解析,但是我希望该路径成为搜索它们的最后一个位置(即,优先于存储在中的库中/lib和/usr/lib之上的库/ParanoidAndroid/),因此现在的查找顺序为: LD_LIBRARY_PATH中的目录; 来自/etc/ld.so.conf的目录; / lib; / usr / lib。 / ParanoidAndroid;

1
尝试通过<()在vim中编辑时文件不再可用
当与水手一起工作时,我经常做诸如 vim &lt;(hg cat -r 42 somefile) 但是,如果我用大于几百行的文件尝试此操作,则会在vim中收到读取错误,并且仅包括前几百行。如果我使用gvim而不是vim,则会出现如下错误 E211: FIle "/proc/3546/fd/63" no longer available 这不行吗?我不知道它是否相关,但是我在bash和zsh中都尝试过,结果相同,而且我也尝试过 cat &lt;(hg cat -r 42 somefile) 如我所料,它将打印整个文件。
2 shell  vim 

3
bash进程的PID未被$捕获!
虽然脚本的这一部分可以正常工作: geany &amp; pid=$! ... kill -KILL $pid 相反,事实并非如此。 lxterminal &amp; pid=$! ... kill -KILL $pid 看起来bash进程仍在后台,但未由标识$pid。如何获取终端窗口的PID,以便以后可以终止该进程? 注意:我也尝试用它的名字杀死它,但是该--title选项引起了与的某种冲突PROMPT_COMMAND。



1
重建的kmod软件包不通过`YUM`更新,而是通过`rpm`更新
我用以下版本构建了一个软件包: kmod-dahdi-linux 10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686 这应该是系统上已安装的升级: kmod-dahdi-linux 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686 当我做一个yum localupdate我得到以下: Resolving Dependencies --&gt; Running transaction check ---&gt; Package kmod-dahdi-linux.i686 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686 will be updated ---&gt; Package kmod-dahdi-linux.i686 10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686 will be an update --&gt; Finished Dependency Resolution 但是当它遇到事务检查时,我遇到文件冲突,就像它没有更新软件包,而是并排安装,如下所示: file /lib/modules/2.6.32-431.el6.i686/dahdi/dahdi.ko from install of kmod-dahdi-linux-10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686.i686 conflicts with file from package kmod-dahdi-linux-2.9.0.1-72_centos6.2.6.32_431.el6.i686.i686 我尝试过时的版本已过时,我尝试过升级时代(如您所见,现在的时代已经是10) 当我做: rpm -Uvh …
2 linux  yum  rpm  rpmbuild 

2
打开终端时不需要登录?
谈到Linux,尤其是Ubuntu(14.04版)系统: 情况1-如该答案所指出,分配伪终端的进程不需要进行登录:例如,cups。无论如何,它们未在who命令输出中列出。 情况2-如果我进行GUI登录,则可执行文件gnome-terminal(或xfce4-terminal根据桌面环境)可以打开许多伪终端,而我的用户已经登录,并且对于每个打开的伪终端,who命令中都应有新行输出将会出现。 所以, 1)流程和用户都可以打开终端,因此它们必须具有一些共同的功能(因为它们可以以类似的方式操作)和某些差异。从系统外壳程序的角度来看,用户(打开终端时显然需要登录并在who命令中列出)和进程(不需要登录才能使用终端的用户)和谁之间的区别是什么?没有在who命令中列出)?我的疑问是,进程可以在需要时打开终端,而无需系统进行任何检查,而用户必须始终进行登录。 2)如何通过GUI中的唯一登录来“解锁”由终端仿真器打开的伪终端的所有登录?如果我/dev/tty1通过打开这是无效的CtrlAltF1。

1
使用管道和参数来别名化命令的问题
注意:我使用tcsh。 我正在尝试创建一个别名,该别名将使用mutt命令发送带有预先编写的正文和主题行的电子邮件,但是它将使用alias参数并将其附加到电子邮件中。我目前拥有的最好的是: alias emailattach 'echo "Message Body" | mutt -a \!:1 -s "Subject" email@somewhere.com' 这个别名设置得很好,没有任何抱怨,但是当我尝试运行它时,我收到以下消息: Can't stat email@somewhere.com: No such file or directory email@somewhere.com: unable to attach file. 删除后,-a \!:1 我不再收到错误消息,因此我认为问题可能集中在别名的这一部分。我已告知emailattach要附加的文件是真实的可附加文件(特别是PDF),所以这不是问题。 我也尝试了相同的别名,但是没有单引号,并且我仅收到此错误: email@somewhere.com: unable to attach file. 为了查看管道是否是问题的症结,我尝试了以下操作: alias emailattach mutt -a \!:1 -s "Subject" email@somewhere.com 然后尝试运行: echo "Message Body" …
1 email  alias  tcsh 

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.