Unix & Linux

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

2
if命令在find -exec中
我只是想列出当前目录下的所有目录和文件,并使用以下命令写出它们是文件还是目录: find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \; 我知道这是一个愚蠢的命令,我可以使用诸如-type f或的其他方式-type d,但是我想了解为什么这段代码无法按预期工作。它只是将目录打印到所有这些文件。例如,当输出find为时: . ./dir ./dir/file 我的代码输出是: . : directory ./dir : directory ./dir/file : directory 和输出 echo `echo dir/file : ;if [ -f dir/file ]; then echo file; else echo …

4
在传递到另一个命令之前完全缓冲命令输出?
有没有一种方法可以在没有临时文件的情况下只执行另一个命令?我有一个运行时间更长的命令,另一个具有格式化输出并使用curl将其发送到HTTP服务器的命令。如果我只是执行commandA | commandB,commandB将启动curl,连接到服务器并开始发送数据。因为commandA花费了很长时间,所以HTTP服务器将超时。我可以做我想做的事commandA > /tmp/file && commandB </tmp/file && rm -f /tmp/file 出于好奇,我想知道是否有没有临时文件的方法。我尝试过,mbuffer -m 20M -q -P 100但是卷曲过程仍然在一开始就开始了。Mbuffer一直等到commandA实际发送数据完成为止。(数据本身最大只有几百kb)
10 shell  pipe  buffer 


1
在crontab错误消息中,第19行:12364被杀死是什么意思?
我每天都有一个crontab任务: 50 1 * * * sh /my_path/daily_task.sh > /tmp/zen_log 2>&1 这个daily_task shell脚本将运行一些python脚本并产生一个数据文件。 它失败了两个晚上。但是当我早上来的时候,手动运行python脚本,我得到了数据文件。或者,我设置了一个新的crontab,它仅将日期设置为0 10 * * *,并且此crontab也成功。 所以昨天,我放入> /tmp/zen_log 2>&1了cron任务以获取一些错误消息。 今天早上,我在zen_log中收到了此错误消息: /my_path/daily_task.sh: line 19: 12364 Killed /usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1 似乎某些进程已被杀死?但这到底是什么line 19: 12364 Killed意思? PS: 今天,在一分钟前,当我手动运行python脚本时,我得到了: /usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1 Killed
10 bash  cron 

2
在Ctrl + C上,终止当前命令,但继续执行脚本
我有一个bash脚本,其中我执行一行,休眠一段时间,然后在tail -f日志文件中验证是否可以看到某种模式,按ctrl + c退出,tail -f然后移至下一行直到bash脚本完成执行: 到目前为止,这是我所做的: #!/bin/bash # capture the hostname host_name=`hostname -f` # method that runs tail -f on log_file.log and looks for pattern and passes control to next line on 'ctrl+c' echo "===================================================" echo "On $host_name: running some command" some command here echo "On $host_name: sleeping for 5s" …
10 bash  shell  signals  trap 

1
列出所有udev规则(例如,针对设备)?
我想知道如何列出所有udev规则。 我知道它们可以潜在地以行(一行=一个规则)的形式*.rules存储在这些目录中的文件中 /etc/udev/rules.d /lib/udev/rules.d /run/udev/rules.d /var/run/udev/rules.d 因此,尽管我可以通过简单地压缩*.rules这些目录中的所有文件来找到所有规则。这似乎不起作用(因为执行了一些规则,我在这些目录中找不到任何软件作为规则)。 充其量我以为udevadm接口有一个命令,可以让我打印出udev当前拥有的所有规则。 可以肯定的是,我对man udevadm(尤其是关于)部分进行了审查,udevadm info [parameters]似乎未产生任何结果。 鉴于udev允许针对同一设备的所有文件和规则,因此不知道为设备组合所有规则的有效/可行方法令人沮丧。
10 udev 

1
Udev规则:ACTION ==“ add”有效,但ACTION ==“ remove”无效!
我已经写文件90-usb.rules下/etc/udev/rules.d/包含: ACTION=="add", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", RUN+="/bin/mkdir /home/pandya/Desktop/testdir" ACTION=="remove", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", RUN+="/bin/rmdir /home/pandya/Desktop/testdir" 当我插入设备时,udev ACTION=="add"通过以下方式创建目录RUN+="/bin/mkdir /home/pandya/Desktop/testdir"(工作正常) 但是当我拔出类似udev的设备时ACTION=="remove ,不会通过以下方式删除目录RUN+="/bin/rmdir /home/pandya/Desktop/testdir" 这没有问题,/bin/rmdir因为我也检查了另一个mkdir(RUN+="/bin/mkdir /home/pandya/Desktop/testdir2")的位置,但这也无法正常工作。 因此,我想知道为什么删除操作不起作用?我如何解决它?
10 udev  trisquel 

3
如何以排序顺序对文件进行tar处理?
如果tar是递归目录,则仅使用os的顺序readdir。 但是在某些情况下,最好对已排序的文件进行tar处理。 对按字母顺序排序的目录进行压缩的好方法是什么? 注意,出于这个问题的目的,在典型的Linux系统上使用gnu-tar是可以的。
10 linux  tar  sort 

1
有没有一种简便的方法可以重建所有端口?
在10.1-RELEASE的升级过程中,系统提示我: Installing updates... Completing this upgrade requires removing old shared object files. Please rebuild all installed 3rd party software (e.g., programs installed from the ports tree) and then run "/usr/sbin/freebsd-update install" again to finish installing updates. 有没有办法快速重建我的所有端口?也许埋在portmaster庞大的手册页中?我自己找不到...


4
如何在Xfce中更改语言界面?
我用Xfce安装了Debian sid,我想更改界面中使用的语言。我想将语言设置为英语(美国),以模仿法语。更改必须在整个系统(GUI和CLI)上进行。 我试过了 重新配置语言环境 但这仅适用于root用户,不适用于普通用户(我的菜单在Xfce上仍为法语) # dpkg-reconfigure locales # locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= 作为普通用户: $ dpkg-reconfigure locales -bash: dpkg-reconfigure : commande introuvable $ locale LANG=fr_FR.utf8 LANGUAGE= LC_CTYPE="fr_FR.utf8" LC_NUMERIC="fr_FR.utf8" LC_TIME="fr_FR.utf8" LC_COLLATE="fr_FR.utf8" LC_MONETARY="fr_FR.utf8" LC_MESSAGES="fr_FR.utf8" LC_PAPER="fr_FR.utf8" LC_NAME="fr_FR.utf8" LC_ADDRESS="fr_FR.utf8" LC_TELEPHONE="fr_FR.utf8" LC_MEASUREMENT="fr_FR.utf8" LC_IDENTIFICATION="fr_FR.utf8" …
10 debian  xfce  locale 


3
为什么Linux在许多文件上存储CPU温度?
我有一台2 cpus的笔记本电脑(thinkpad)。目前,我可以使用cat(1)从以下文件中读取CPU温度: cat /sys/class/thermal/thermal_zone0/temp cat /sys/class/thermal/thermal_zone1/temp cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input cat /sys/devices/LNXSYSTM:00/LNXCPU:00/thermal_cooling/subsystem/thermal_zone1/temp cat /sys/devices/LNXSYSTM:00/LNXCPU:01/thermal_cooling/subsystem/thermal_zone0/temp 我的问题是为什么内核将这些信息存储在这么多不同的地方,并且哪个是读取CPU温度的“标准”文件? 这是由于systemd(我正在使用Arch Linux)发生,还是诸如Slackware之类的非systemd Linux发行版采用了不同的方法?

1
使用getopts为一个选项提供两个参数
在下面的代码中,当我给出选项时,r则getopts需要一个参数: while getopts ":hr::l:" opt; do case $opt in r ) echo "Run Numbers - argument = $OPTARG " ;; l ) echo "Latency range - argument = $OPTARG" ;; h ) helptext graceful_exit ;; * ) usage clean_up exit 1 esac done 但是我需要在-r选项之后传递两个参数,而不是一个。是否有捷径可寻?

1
是否可以在Shell脚本中同时运行两个命令?
我知道可以在命令行上&在后台运行命令。但是我想知道是否可以在脚本中做到这一点。 我有一个像这样的脚本: date_stamp=$(date +"%Y-%m-%d" --date='yesterday') shopt -s extglob cd /my/working/directory/ sh ./stay/get_it_ios.sh sh ./stay/get_it_mix.sh cd stay zip ../stay_$date_stamp.zip ./*201* rm ./stay/!(*py|*sh) 我想运行sh ./stay/get_it_ios.sh和sh ./stay/get_it_mix.sh合力得到更为准确的数据。是否可以在Shell脚本的范围内执行此操作?

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.