Unix & Linux

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

6
使用猫通配符打印强制换行
我想在bash中使用带有通配符的cat以便将多个小文件(每个文件是一个句子)打印到标准输出。但是,单独的文件内容不是用换行符分隔的,为了方便阅读,我希望这样做。 如何在此命令中添加某种文件分隔符?

1
FreeBSD如何分配内存?
我知道,这是简化/广义的解释,但top(1)效用共分FreeBSD的内存分为六个pools- Active,Inactive,Wired,Cache,Buffers和Free。top(1)输出示例: Mem: 130M Active, 42M Inact, 51M Wired, 14M Cache, 34M Buf, 648K Free Swap: 512M Total, 512M Free Active由运行中的进程Wired使用,主要用于内核。Inactive是关闭的进程中的内存,如果需要重用,它仍会缓存,Cache是缓存的数据,Buffers是磁盘缓冲区(我想它与cachedLinux free(1)输出(?)类似),并且Free是完全未使用的内存。我是正确的是FreeBSD内核自动分配的空间Inactive,Cache和Buffers池Active或者Wired如果需要的话?
9 kernel  freebsd 

5
检查是否所有列出的软件包都安装在bash中
我的二进制文件取决于这些boost库和相应的软件包: NAME | PACKAGE: --------------------------------------+----------------------------------- libboost_serialization.so.1.55.0 | libboost-serialization1.55.0 libboost_thread.so.1.55.0 | ibboost-thread1.55.0 libboost_date_time.so.1.55.0 | libboost-date-time1.55.0 libboost_signals.so.1.55.0 | libboost-signals1.55.0 因此,我想定义一个软件包列表: boostlibnames="libboost-serialization1.55.0 libboost-thread1.55.0 libboost-date-time1.55.0 libboost-signals1.55.0" 现在,我想检查一下它们是否都已安装,然后才实际运行apt-get install。我知道apt会自动检查软件包是否已安装,但是我想在提示用户时先提示他是否要安装缺少的库。 那么,有没有一种很好的方法来检查是否已安装所有列出的库(具有上述变量)?
9 shell  apt  dpkg 

1
w命令如何知道空闲时间和运行命令?
该w命令显示了一堆有关谁登录他们正在做什么的信息。 来自维基百科的示例: $ w 11:12am up 608 day(s), 19:56, 6 users, load average: 0.36, 0.36, 0.37 User tty login@ idle what smithj pts/5 8:52am w jonesm pts/23 20Apr06 28 -bash harry pts/18 9:01am 9 pine peterb pts/19 21Apr06 emacs -nw html/index.html janetmcq pts/8 10:12am 3days -csh singh pts/12 16Apr06 5:29 …
9 w 

1
即使包含“ string.h”,strlcpy和strlcat的隐式声明
当我尝试调用函数strlcpy或strlcat在C文件中时,Gcc引发错误: error : implicit declaration of strlcpy error : implicit declaration of strlcat 我可以在哪个库中找到这些功能及其手册页?我包括了,string.h但没有任何改变。我正在运行Linux Mint 17.2和gcc 4.8.4
9 man 

5
在必要的目录中运行终结器,然后运行必要的命令
我想在特定目录(例如)中打开Terminator /home/downloads/,然后运行命令。 我通过此“自定义命令”完成了第一部分:cd /home/downloads; bash 终结者现在从该目录中启动,但是我该如何做第二部分? 既然终止程序已在downloads目录中启动,我想运行任何我想要的命令,例如lsor rake命令,或使用一些别名作为命令。我怎样才能做到这一点? 我在终结器中按鼠标右键,然后选择“参数”,“布局”,然后在“自定义命令”部分添加文本。 终止程序启动后,必须自动执行所有这些操作。


2
在shell中间接扩展变量
我需要在bashShell中间接引用变量。 我基本上是想make通过写作做些什么$($(var))。 我尝试使用${$var}哪种方法是最直接的解决方案,bash但随后出现此错误: bash: ${$var}: bad substitution 有没有办法做到这一点? 我所试图做的是遍历所有参数($1,$2,$3,...)来使用迭代变量的程序并没有间接我不能做到这一点。

2
使用awk处理3个文件
考虑以下文件: file1: boo,8,1024 foo,7,2048 file2: foo,0,24,154 noo,0,10,561 file3: 24,154,7,1024,0 我需要转到File1并检查是否$2==7;如果为true,则从File1中获取$1,$2并$3从File1中获取;现在我必须比较$1从File1等于$1从File2;如果是真的,我不得不采取$3并$4从文件2,其不存在于文件1,那么我必须去文件3,检查是否$1从文件3等于$3从文件2,并$2从文件3等于$4从文件2 ; 如果是,那么我必须检查是否$2来自File1等于$3从文件3,那么如果这种情况是真的,我有比较$3从File1中有$4来自文件3,如果$3从文件1大于$4从文件3。 我尝试了以下脚本: cat [file1] [file2] [file3] | awk -F, '{if(NF==3) {if($2==7){a[$1]=$1; b[$1]=$2; c[$1]=$3} }else {if(NF==4){if(a[$1]==$1){d[$3]=$3; e[$4]=$4} }else {if(NF==5){if(d[$1]==$1 && e[$2]==$2){print a[$1], b[$1], c[$1], d[$1]}} } } }' 所需的输出是: foo,7,2048,24,154,1024

3
如何知道Debian中软件包的源代码库?
在Debian中,AFAIK的某些软件包在Subversion中维护(著名的team-pkg-gnome),而另一些软件包则在git中维护,而另一些软件包则在其他VCS中维护。 有没有办法知道包的来源在哪里apt-get source $PACKAGENAME? 我尝试了三种方法,但都失败了: $apt show $PACKAGENAME $aptitude show $PACKAGENAME $apt-cache show $PACKAGENAME 以上所有内容均无法提供/共享此信息。 无论如何有获取信息。我需要知道源仓库。名称以及它是否在git,svn或其他版本控制中。

3
Tomcat 7不在RHEL7上向catalina.out生成日志输出
我有一台安装了Apache Tomcat 7.0的RHEL7服务器,并且在最近更新到RHEL7.1之后,所有到$ {catalina.base} /logs/catalina.out的日志记录都停止了。但是,我在journalctl中收到日志。 如果我输入journalctl -u tomcat,则会得到日志记录。我有什么办法可以将日志记录也发送到catalina.out吗? cat /usr/share/tomcat/logs/catalina.out no output journalctl -u tomcat Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455) Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) Aug 20 10:07:14 server.example.com server[26435]: at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) …

13
Centos 7:无法启动/关闭网络:为中继接口配置接口
在服务器(Centos 7)上配置的交换机被配置为VLAN#115,2014的中继。我已经装好了 # lsmod | grep 8021q # modprobe 8021q 我想使用VLAN#115在服务器上配置IP地址,执行以下配置: ifcfg-em1 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=em1 UUID=c0c4d851-d762-4301-8c20-d6128aee5261 DEVICE=em1 ONBOOT=yes ifcfg-em1.115 TYPE=Ethernet BOOTPROTO=none IPADDR=172.31.141.242 PREFIX=24 GATEWAY=172.31.141.1 DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=em1.115 UUID=c0c4d851-d762-4301-8c20-d6128aee5261 DEVICE=em1.115 VLAN=yes ONBOOT=yes 我最终无法重新启动网络服务。出现的错误信息是: …

1
随机播放两个并行文本文件
我有两个句子对齐的并行语料库(文本文件),带有大约5000万个单词。(来自Europarl语料库->法律文件的并行翻译)。我现在想对两个文件的行进行混排,但是两者都以相同的方式进行。我想通过一个唯一的随机源使用gshuf(我在Mac上)来解决这个问题。 gshuf --random-source /path/to/some/random/data file1 gshuf --random-source /path/to/some/random/data file2 但是我收到了错误消息end of file,因为显然随机种子需要包含要排序的文件包含的所有单词。真的吗?如果是,我应该如何创建满足自己需求的随机种子?如果没有,我还可以通过其他什么方式并行地随机分配文件?我考虑过将它们粘贴在一起,随机化然后再分裂。但是,这似乎很难看,因为我首先需要找到文件中没有的定界符。

3
批量删除ZFS上的大型目录,而无需递归遍历
我想删除一个包含大量数据的目录。这是我的备份阵列,它是一个ZFS文件系统,线性跨度,单个池称为“ san”。San已安装在上面,/san 因此我要批量删除/ san / thispc / certainFolder $ du -h -d 1 certainFolder/ 1.2T certainFolder/ rm -rf certainFolder/无需我等待,我可以销毁该目录的句柄,使其可覆盖(即使我选择重新创建它,也可以使用相同的目录名)是不是可以? 因此,例如对于不太了解zfs fs内部mgmnt具体是如何映射目录的,但是如果我发现该映射表示例如,并删除了正确的条目,例如,该目录将不再显示,并且该目录以前保留的空间也必须从某种审计中删除。 即使在ext3 fs上,是否有一种简单的方法可以做到这一点,还是递归remove命令首先已经要做的事情,即窃取并编辑日志? 我只是希望做一些类似的事情,kill thisDir即它只是删除某种ID,并且poof目录不再显示在ls -la驱动器中,并且数据显然仍然存在于驱动器上,但是现在可以重用该空间了(被覆盖),因为ZFS就是那么酷吗? 我的意思是我认为zfs真的很酷,我们该怎么做?理想地?一起搓手:-) 我的特定用例(除了对zfs的热爱之外)是对备份存档的管理。该备份目录通过Windows盒子上的freefilesync(AWESOME PROG)推送到smb文件共享,但也具有旧文件所在的版本目录。我要删除驻留在主备份中的顶层目录,这些目录已复制到该版本中-例如/san/version/someStuff,每两个月rm -rf /san/version/someStuff/*从腻子终端清除一次,现在我必须打开另一个终端;不想每次都这样做,我已经厌倦了不得不监视rm -rf。 我的意思是,也许我应该将命令设置为只松开手柄,然后打印到标准输出,这可能很好。 更现实的是,在zfs destroy san/version; zfs create -p -o compression=on san/version@Gilles响应后,在几秒钟后重新创建数据集。

5
如果无法识别死键组合,请插入两个字符(例如'a→á,'b→'b)
当我在Linux Mint机器上使用英语,美国国际语言的任何变体(带有死键,altGr死键或替代键)时,我总是会遇到这种现象。 当我按下以下任一键时:' "然后跟随它们,出现“不可重音”字符,如a [或bno输出。 在Windows US-International中,它将打印[或b。如果要键入此字符,则必须用空格而不是任何“不可重读”字符对每个死键进行转义。这在编程时很烦人(不是真的,但是我在Windows'Qwerty International'上接受了type.io的培训,并且在系统之间来回切换很烦人)。 有什么方法可以改变它,使其像在Windows中一样工作吗?

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.