#!/bin/bash
groupmod -o -g $AUDIO_GID audio
groupmod -o -g $VIDEO_GID video
if [ $GID != $(echo `id -g qq`) ]; then
groupmod -o -g $GID qq
fi
if [ $UID != $(echo `id -u qq`) ]; then
usermod -o -u $UID qq
fi
chown qq:qq /TencentFiles
su qq <<EOF
echo "启动 $APP"
mkdir -p /home/qq/.deepinwine
touch /home/qq/.deepinwine/.QQ_run
./observer.sh > /home/qq/observer_output.txt &
"/opt/deepinwine/apps/Deepin-$APP/run.sh"
echo "run.sh has been killed."
EOF
echo "exit"
observer.sh:
#!/bin/bash
echo "observer starts."
while ! test -n "`pidof QQExternal.exe`"
do
sleep 1
done
echo "QQExternal.exe has started."
while test -n "`pidof QQExternal.exe`"
do
sleep 1
done
echo "QQExternal.exe has stopped."
pkill run.sh
if test -n "pidof run.sh"
then
echo "killing run.sh failed."
else
echo "run.sh is killed."
fi
entrypoint.sh
最后写的这段我猜是不是想在进程
QQProtect.exe
结束的时候自动退出呢?但其实我没太明白为什么选择QQProtect.exe
而不是QQExternal.exe
,因为我们在TIM上点“退出”之后实际上是关闭了进程QQExternal.exe
(我已按照issue 46的回答自己升级了TIM,不确定是不是升级导致这一行为发生了变化?)。update: 再次尝试发现确实旧版本的TIM用的是
QQProtect.exe
。而更奇怪的是在
entrypoint.sh
里中间会原地运行一个run.sh
进程,而它似乎没有在我退出TIM时自动结束,导致后面的sleep 300
以及上面那段检测pidof QQProtect.exe
的循环根本没有执行,所以每次都得手动docker stop
才能把它关掉...现在我简单改了一下之后可以了,我的
entrypoint.sh
:observer.sh
: