命令行可以执行nohup后却不能执行

有一个脚本/root/kill.sh:

1
2
3
4
5
#!/bin/sh
while [ 1 ]; do
	sudo kill -9 `pidof java`
	sleep 10
done

在命令行执行很正确,能隔一段时间把所有的java进程都杀掉了。
但执行:

1
nohup /root/kill.sh &

现象就很奇怪了,有时候能杀掉所有java进程,有时候不干活,java进程依然存在,让人怀疑人生。
无意中打开nohup.out发现有输出:
sudo没有与之关联的会话。
于是,修改kill.sh,把kill之前的sudo去掉就正常了。

Bash读取某一行某一列

打印第11行:
sed -n "11, 1p" /tmp/tmp.txt
或者
awk 'NR == 11 {print}' /tmp/tmp.txt

打印第3列:
awk '{print $3;}' /tmp/tmp.txt

打印总行数:
awk 'END {print NR}' /tmp/tmp.txt

ultraiso虚拟光驱总是删除不干净

用regedit查找ultraiso,找到PropertyStore结点下有个结点中含有

Users\euhat\AppData\Local\Temp\UltraISO\UltraISO.exe

在资源管理器中找到相应目录,发现如下文件删不掉。

C:\Users\euhat\AppData\Local\Temp\UltraISO\drivers\ISODrv64.sys

则,再次运行ultraiso程序,选项->配置->虚拟光驱->设备数量设为0,保存。退出ultraiso程序。
再regedit查找ultraiso,找到

1
计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\ISODrive

删除此键,退出regedit,重启电脑就能看到在资源管理器里,烦人的虚拟光驱盘符去掉了。

记得上面提到的ISODrv64.sys现在可以删掉。

本地网卡和WIFI网卡共存不能上网

原因是路由都走本地网卡了,这点可以用tracert命令证明。

于是,用以下三条命令可实现上网:

1
2
3
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 192.168.43.1
route add 192.168.0.0 mask 255.255.0.0 192.168.1.1

其中192.168.43.1是WIFI网关,192.168.1.1是本地网关。

MessageDialogFragmentV4 can't find android.support.v4.app

编译UVCCamera生成signed apk时,报一堆这样的错:

1
2
3
Warning:com.serenegiant.dialog.MessageDialogFragmentV4: can't find referenced method 'void show(android.support.v4.app.FragmentManager,java.lang.String)' in program class com.serenegiant.dialog.MessageDialogFragmentV4
Warning:com.serenegiant.dialog.MessageDialogFragmentV4: can't find referenced method 'void setTargetFragment(android.support.v4.app.Fragment,int)' in program class com.serenegiant.dialog.MessageDialogFragmentV4
com.serenegiant.dialog.MessageDialogFragmentV4: can't find referenced class android.support.v4.app.Fragment

解决办法,把libuvccamera和usbCameraCommon目录中的build.gradle修改一下,注释掉'support-v4':

1
2
3
compile("com.serenegiant:common:${commonLibVersion}") {
//	exclude module: 'support-v4'
}

Linux禁止用户访问某个目录

比如root用户生成了一个文件夹dir0,再执行

1
chmod o-rwx dir0

那么当非root权限用户usr0访问此目录

1
2
cd dir0/
bash: cd: dir0/: Permission denied

wsa__FaultSubcodeValues

编译gSoap生成的源码报找不到wsa__FaultSubcodeValues定义的错误。

解决方法:

在wsdl2h生成的.h文件中加入

1
#import "wsa.h"

再用soapcpp2生成源码。