Unix & Linux

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


1
第一须藤总是慢
sudo我在Ubuntu 14.04服务器上输入的第一个总是很慢。密码提示会立即显示,但是在我按Enter键之后,大约需要10到15秒钟,直到打印输出。此后所有sudo命令都会立即执行。 sudo strace -S time -c sudo echo hi在这种情况下,运行类似之类的命令不会显示任何有用的信息,因为sudo from sudo echo hi已经是第二个sudo并且可以快速执行。如果过了一段时间,并且我必须在运行的会话中重新输入密码,那么它又很慢。 我发现的所有解决方案都是在/etc/hosts文件中添加主机名作为127.0.0.1的解析,但我没有用。su root立即执行。我记得最近几天更改的唯一一件事是服务器路由,安装samba,dnsutils和bind9的子网的子网掩码。但是这些进程都没有运行,并且问题仍然存在,包括物理访问,ssh会话以及tmux会话。 编辑:新方法 我尝试sudo tcpdump -vvvi any > tcpdump.log 在所有NIC都断开连接的情况下运行。日志显示以下内容: 18:35:09.453399 IP (tos 0x0, ttl 64, id 49112, offset 0, flags [DF], proto UDP (17), length 76) localhost.38498 > localhost.domain: [bad udp cksum 0xfe4b -> 0x1050!] …
8 sudo  dns  pam 

3
如何在不存储两次的情况下重新压缩200万个gzip文件?
我有大约200万(60GiB)压缩的小文件,我想创建一个压缩的存档,其中包含所有未压缩的版本。不幸的是,我不能全部解压缩它们,然后创建压缩的存档,因为我只有大约70GiB的可用磁盘空间。换句话说,我该如何等效于GNU tar中不存在tar --file-filter="zcat" zcf file.tar.gz directory类似的命令行开关--file-filter?




3
计算文件中的nul个分隔项
我有一个Shell脚本,用于find -print0将要处理的文件列表保存为临时文件。作为日志记录的一部分,我想输出找到的文件数,因此我需要一种方法来获取该计数。如果-print0未出于安全考虑使用该选件,则可以使用wc -l该计数。

1
尽管它在ubuntu的/ etc / default / locale中支持unicode,但如何在语言环境中设置LANG?
我跑步了Ubuntu 12.04,我不能将地区设置为en_US.utf8。我设置了LANG通过配置/etc/default/locale描述这里。 $cat /etc/default/locale LANG=en_US.utf8 $locale LANG= LANGUAGE= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=POSIX 但是,如上所述,它不起作用。如何将此LANG变量设置为en_US.utf8? 我问的原因是,当我运行时echo -e "\x03\bb",可以unicode greek letter lambda symbol正确显示,但是我的问题是emacs。在emacs中,我无法显示unicode符号,例如:C-x 8 RET 03bboutputs \u03bb,而不是a greek letter lambda symbol。我认为问题出在这些语言环境设置,但我无法设置它们。 编辑:我认为问题已解决。 $su $USER -c 'env; echo ==; locale' | egrep '==|LANG' LANG=en_US LANGUAGE=en_US …

2
Java JDK在依赖项列表,Debian中缺少libjli.so路径
我正在编写chroot监狱的脚本,自动化的一部分包括将各种可执行文件及其依赖项复制到监狱中。我正在使用以下bash行从依赖项列表中解析文件路径(例如,对于Java): $ ldd `which java` | grep -o '/[^()]*' /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libpthread.so.0 /lib/x86_64-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libc.so.6 /lib64/ld-linux-x86-64.so.2 这对Node.js和Python很好用,但是当我尝试java从监狱执行时,出现错误: java:加载共享库时出错:libjli.so:无法打开共享库文件:没有这样的文件或目录 事实证明,依赖项列表中缺少libjli.so路径……至少那些ldd向我们展示的依赖项(第5行): $ ldd `which java` linux-vdso.so.1 => (0x00007ffff7f4d000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7ac3928000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7ac370c000) libjli.so => not found libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7ac3507000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7ac317c000) /lib64/ld-linux-x86-64.so.2 (0x00007f7ac3b48000) 我找到了文件... $ find /usr/lib …

1
确定文本文件中的换行符?
给定文本,是否有一个程序可以检测换行符是Windows,Mac还是Linux? 例如,以下文字显示为 less 内存:^ M ^ CPU可以直接访问的Mis存储^ M ^ M术语“内存”通常(但不总是)与可寻址的半导体存储器关联,即由基于硅的晶体管组成的集成电路。^ M半导体存储器被组织为^记忆细胞 我以为^ M是Mac下的换行符。但是在emacs中,我按Ctrl-q Ctrl-m进行了搜索,但没有发现任何内容。 谢谢。
8 text 

5
从包含时间戳的文件中删除重复的行
这个问题/答案为删除文件中的相同行提供了一些很好的解决方案,但是对我来说不起作用,因为否则重复的行都带有时间戳。 是否可以让awk在确定重复项时忽略一行的前26个字符? 例: [Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The …

2
ntfs-3g:输入/输出错误
在过去3天(更新后)中,我的Debian Jessie拒绝挂载NTFS磁盘。我重新安装了libfuse2和ntfs-3g,但是得到了相同的输入/输出错误 我在Windows 7和OSX Mavericks(使用ntfs-3g)下尝试了相同的磁盘,并且它们工作正常。我清除了ntfs-3g并重新安装,仍然是同样的问题。 磁盘有时会挂载,有时不会挂载。如果它们确实挂载,则有时可以进入挂载目录,而有时,我会收到bash错误的安装目录输入/输出错误。当我尝试使用ls -l时,我能够进入mount目录的次数是很多,而不是file / dir属性。 我曾尝试在Windows下使用ntfsfix和chkdisk,但它们均未报告任何问题,只是在Jessie安装下,突然我无法正确安装它们。 dmesg除了附加的外部磁盘外没有其他有用的信息: [12816.210969] scsi 20:0:0:0: Direct-Access Seagate External SG16 PQ: 0 ANSI: 4 [12816.211825] sd 20:0:0:0: Attached scsi generic sg7 type 0 [12816.212542] sd 20:0:0:0: [sdg] 732566642 4096-byte logical blocks: (3.00 TB/2.72 TiB) [12816.213591] sd 20:0:0:0: [sdg] Write Protect is off …
8 debian  mount  ntfs-3g 

1
inotifywait-重命名时获取新旧文件名
我正在寻找一种检测文件重命名并获取新旧文件名的可靠方法。这是我到目前为止的内容: COUNTER=0; inotifywait -m --format '%f' -e moved_from,moved_to ./ | while read FILE do if [ $COUNTER -eq 0 ]; then FROM=$FILE; COUNTER=1; else TO=$FILE; COUNTER=0; echo "sed -i 's/\/$FROM)/\/$TO)/g' /home/a/b/c/post/*.md" sed -i 's/\/'$FROM')/\/'$TO')/g' /home/a/b/c/post/*.md fi done 它可以工作,但是它假定您永远不会将文件移入或移出监视文件夹。它还假定事件成对出现,首先是move_from,然后是move_to。我不知道这是否总是对的(到目前为止有效)。 我读过inotify使用cookie链接事件。可以通过某种方式访问​​Cookie吗?缺少cookie,我考虑过使用时间戳将事件链接在一起。以更可靠的方式获取FROM和TO的任何提示吗? 完整脚本要点。


3
管道/重定向一组命令
我目前使用以下设置来重定向多个命令的输出: echo "Some normal commands" ( echo "Error: something happened" echo "Warning: this incident will be logged" ) >> logfile echo "More normal commands" 这非常有用,并且还可以与管道一起使用。 这是最好的方法吗?我是否应该考虑替代方案?

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.