Unix & Linux

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

4
Ctrl-Z和kill -STOP有什么区别?
当make从外壳程序运行命令(在大型项目上)时,可以键入Ctrl-Z来停止该过程并返回到外壳程序。随后,我可以运行fg以继续该过程。 我正在尝试编写一个shell脚本来自动执行此操作(特别是每隔几秒钟检查一次我的CPU温度,并在温度过高时停止该过程,因为我的计算机容易过热)。我的第一次尝试是这样的(简化的): make & subpid="$!" sleep 2 # If the CPU temperature is too high... kill -STOP "$subpid" sleep 2 # If the CPU temperature has dropped to safe levels... kill -CONT "$subpid" wait "$subpid" 不幸的是,这没有用。向该进程发送SIGSTOP不会暂停它(通过继续将输出发送到终端可以明显看出这一点)。我make &在命令行中运行,发送了SIGSTOP,并使用ps;检查了进程状态。它被列为已停止(并在我发送SIGCONT时再次启动),但它仍在喷射输出并提高核心温度!使用Ctrl-Z停止它从来没有这个问题,但是我不知道如何在脚本中做到这一点。 是什么使Ctrl-Z与有所不同kill -STOP,以及如何在Shell脚本中获得前者的行为?

1
Bash不再更改目录
我的bash shell将不再使用cd更改目录。我在工作时注意到了这一点,发现我打开的任何新外壳程序(终端或xterm等)都将卡在主目录中并且无法退出(已经打开的终端继续正常工作)。 [~]$ pwd /home/sys/dave [~]$ cd / [~]$ cd Documents/ [~]$ pwd /home/sys/dave [~]$ type cd cd is a shell builtin [~]$ alias alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 我认为这一定是我没有时间处理的怪异现象,例如内存不足的处理程序(已检查cd是否没有别名并使用内置版本)。 因此,我(是的,我知道)重新启动了计算机。 重新启动,完全一样的问题。 另一方面,CSH可以正常运行,因此在上面的代码段之后立即执行以下操作: …
14 linux  bash 


3
可怕的情况-由多个独立的OS实例同时安装的文件系统
我如何安全地摆脱这种情况? 详细信息如下: Xen服务器已将块设备分配给VM。但是这些设备也已安装在Xen内部。 实际上,这些块设备中的44个已像这样安装。更糟的是,每个物理设备在4条路径上可见,并且每个都安装在单独的安装点上。换句话说,设备实际上每个安装5次。 VM guest虚拟机操作系统通过PowerPath伪设备(作为phy:块设备分配到domU)查看路径。 一些设备被格式化为ext2和reiserfs。 无需向我解释此处涉及的文件系统损坏风险。 恐怕即使只是卸载文件系统也可能导致损坏,并且在这一点上,从主机上拉电是最安全的选择。 请注意,所有VM中的应用程序(大部分是Oracle数据库)仍在运行和使用中。 我在调查dom0上的高CPU使用率时发现了这一点。cwd-> / media / disk-12是从/ dev / sdf1挂载的,它属于/ dev / emcpowerr,这是一个无法杀死的“查找”进程 在有人问之前,有一次我看到进程无法杀死并继续使用CPU和RAM(不像已失效/僵尸进程),那是当有未完成的I / O提交时,例如返回了同步但还没有物理上在磁盘上。更常见的是,这发生在磁带I / O上。 建议!? PS我希望安装后可以“保留”设备,以防止发生这种情况?还是在Linux上不可能? 编辑:首先,我确信管理程序内的KDE是元凶。看起来KDE正在安装可以在日志记录中创建桌面图标的设备。但是,在其他Xen服务器上不会发生相同的事情,但是所有其他服务器都运行的是SLES和KDE的较旧版本。V4似乎是令人讨厌的版本,行为3.4更好。 此外,两个非关键VM已挂起。关闭它们后,由于文件系统损坏,它们将无法再次启动。主/生产VM仍在运行,并且其上的数据库仍在运行,但这显然是定时炸弹。客户正在尝试在另一台服务器上的另一台VM上重建环境,但是在配置某些组件时遇到了问题,因此我们正在等待... 无论如何,我觉得到目前为止,答案都还不只是“最佳实践总是正常关闭”,而且我希望得到一些更具体的信息……无论如何,我认为这种情况可能需要更加谨慎思维。关闭会导致未完成的IO(尤其是来自虚拟机管理程序的文件系统元数据更新)同步并可能导致主要的文件系统损坏吗?

4
如何合并驻留在LVM中单个物理卷上的两个逻辑卷?
我有两个逻辑卷,一个逻辑卷安装为/,另一个逻辑卷安装为/ home。 我想将它们结合起来,因为该/卷不断用完空间。(是的,我知道所有空间都在使用什么;不,我无法删除它。) 我愿意把机器放下来一两天。 作业系统:Linux xxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(CentOS)
14 centos  lvm 

2
grep:查找包含日语汉字的所有行
在一个巨大的UTF-8文本文件中,我想显示所有包含日语汉字的行。 这是什么grep(或其他)表达? 如果我没有记错的话,kanjis是之间的字符\u4e00和\u4dbf。 我不需要显示kanas,但是也显示它们并不是一个大问题。
14 grep  unicode 

2
为什么此xargs命令不起作用?
我想删除所有.sh扩展名,所以这样做: ls *.sh | xargs -I {} mv {} `basename {} .sh` 但是,它不起作用,其行为类似于basename返回未更改的文件名。 为什么会这样呢? 例如,这有效: ls *.sh | xargs -I {} echo `basename {}.jpg .jpg`; 编辑: 解决方案:单引号可防止`basename ...`在运行命令之前由外壳进行评估。 ls *.sh | xargs -I {} sh -c 'mv {} `basename {} .sh`'


1
为什么在安装软件包时,Debian有时会要求我插入(安装?)CD?
我注意到有时apt-getDebian要求我插入[我使用的安装CD](6.0.6 amd64 dvd1)。有时没有,尽管也许是因为我已经安装了它。我没有注意到明确的模式。为什么是这样?其他口味也会发生这种情况吗?而且我已经搜索了诸如“ virtualbox apt-get installation cd”之类的东西,但是运气不好(找不到很好的查询)。
14 debian  apt 

2
没有向xargs管道
我有一个脚本,在某些情况下,stdout上可能没有任何内容。在脚本的最后,我使用xargs将必须的行传递给另一个命令。我的问题是,当stdout上没有任何内容时,我收到典型的“用法:程序arg1 arg2”错误消息。 如何避免这种情况?
14 bash  xargs 


4
远程登录时,组与本地组不同
我们将用户存储在LDAP中,还有一些在不同系统中具有意义的组(包括在内的组织角色wheel)。也有工作站本地的组,例如,audio或video不希望放入LDAP中的组。现在,如果我在本地登录,我会得到那些本地组,但是如果我通过SSH登录到同一台机器上,我将缺少它们。如果我su以后直接使用,它们当然会回来。我可能走错了路,但怀疑PAM。 来自的相关条目 nsswitch.conf passwd: compat ldap shadow: compat ldap group: compat ldap 至于pam,始终是auth行,但其他行都相同 /etc/pam.d/sshd auth include system-remote-login /etc/pam.d/system-remote-login(与system-local-login我可能要补充的内容相同) auth include system-login /etc/pam.d/system-login auth required pam_tally2.so onerr=succeed auth required pam_shells.so auth required pam_nologin.so auth include system-auth auth optional pam_gnome_keyring.so account required pam_access.so account required pam_nologin.so account include system-auth account required pam_tally2.so …

5
Openswan连接到多个正确的子网不起作用
我正在尝试使用Openswan(版本2.6.37)将IPsec VPN从本地网络连接到远程站点。当我只想连接到远程站点上的单个子网时,一切正常。但是,远程站点也有一个我要访问的额外子网。 这是我的配置: conn myConn type=tunnel left=192.168.139.14 leftsubnet=192.168.139.0/24 leftxauthclient=yes right=X.X.X.X rightsubnet=172.16.1.0/24 keyexchange=ike auth=esp authby=secret phase2alg=3des-sha1 pfs=yes 当我更换rightsubnet使用rightsubnets,就像这样: rightsubnets={172.16.1.0/24 192.168.3.0/24} ...然后成功创建了连接,但仅列表中的最后一个子网可用。ping 172.16.1.0子网上的任何内容的任何尝试都会失败。如果我交换子网的顺序,则可以ping 172.16.1.X但不能ping其他子网中的任何内容。好像Openswan仅使用列表中的最后一个子网来创建连接。 我在这里做错什么了吗? 我忽略了一些额外的信息(尽管我不确定它是否相关):我的Openswan客户端位于使用NAT的路由器后面,并且nat_traversal=yes我的ipsec.conf文件中已有该信息。
14 networking  vpn  ipsec 

1
〜/ .xinitrc没有被运行
登录计算机时,我无法运行~/.xinitrc(~/.xsession)脚本。我正在使用带有香草lightgm的Xubuntu 12.10作为登录管理器。这两个文件都具有正确的权限(可执行)。我有~/.xinitrc以下内容: #!/usr/bin/env bash # read ~/.Xmodmap if it exists if [[ -f "${HOME}/.Xmodmap" ]]; then xmodmap "${HOME}/.Xmodmap" fi # read ~/.Xresources if it exists if [[ -f "${HOME}/.Xresources" ]]; then xrdb -load "${HOME}/.Xresources" fi # use gnome-keyring-daemon to manage keys /usr/bin/gnome-keyring-daemon --start --components=gpg /usr/bin/gnome-keyring-daemon --start --components=ssh 其他任何命令(如date >> "$HOME/did_start")也未执行。 …
14 ubuntu  x11  lightdm 

1
Linux总是发送ICMP重定向
我有几个Debian Squeeze(最新版本6.0.6)用作路由器。 当链接断开时,它们将ICMP重定向发送到本地主机。这是Debian和其他几种的默认行为。因此,一旦链接恢复正常,主机必须重新启动才能访问它。 我不希望从这些路由器发送任何ICMP重定向。 我测试echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects和sysctl -w net.ipv4.conf.all.send_redirects=0并把net.ipv4.conf.all.send_redirects=0到/etc/sysctl.d/local.conf 这些解决方案中的每把正确的价值为/proc/sys/net/ipv4/conf/all/send_redirects 但是... 内核继续发送ICMP重定向。即使重启后: $ tcpdump -n -i eth0 00:56:17.186995 IP 192.168.0.254 > 192.168.0.100: ICMP redirect 10.10.13.102 to host 192.168.0.1, length 68 并且本地主机(Windows计算机)的路由表被污染。 我可以用netfilter防止这种情况: iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP 知道为什么通常的方法不起作用吗? 以及如何防止不使用netfilter来发送ICMP重定向?
14 linux  networking  ip 

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.