在我的python程序中,我使用Vte终端来派生bash脚本,通过按钮调用。 bash脚本使用wget在互联网上下载一些视频(电视重播下载程序)
import vte
def download(self, dPluzz, donnees=None):
[...]
print list_com2
self.child_pid = self.v.fork_command(None, list_com2)
if self.child_pid == -1:
self.child_pid = self.v.fork_command("/bin/bash", list_com2)
print self.child_pid
程序在*buntu、14.xx或16.04下运行良好,bash脚本被调用并运行。 当这个程序在OpenSuse上启动时,问题就来了(Tumbleweed,没有尝试其他版本)。 我丢了一个核,窗户关上了:
> python /usr/share/dPluzz/dPluzz.py
['/bin/bash', '/usr/share/dPluzz/dPluzz-cli.sh', '--video-codec', 'copy', '--audio-codec', 'aac', '-d', '/home/guillaume/T\xc3\xa9l\xc3\xa9chargements/', '-u']
2299
Erreur de segmentation (core dumped)
下面是bash脚本的开始(不是我写的,我们是2个开发人员):
#!/bin/bash
#set -v -x
################################################################################
#
# Version: 1.2.0
# Name: revoir-cli.sh
# Last modification: 2016/09/12
#
# -------------------------------------- HISTORY -------------------------------
#
# 2016/02/25 (0.9.0): Fusion de dPluzz et dCplus développés principalement par Matthieugoua, melixgaro, gaara
# Merci aussi à Lulux3
# Voir ces scripts pour leur propre historique [melixgaro]
#
# 2016/08/29 (1.0.0): Libération officielle
# Désactivation des tests sur la disponibilité des codecs dans avconv/ffmpeg car non fiables
#
# 2016/09/10 (1.1.0): Réparation des chaînes C8 (ex-D8), CStar (ex-D17), NRJ12, Cherie25, Gulli
#
# 2016/09/12 (1.2.0): Prise en charge de TV5 Monde+ et TV5 Monde+ Afrique
#
#-------------------------------------- DEPENDANCIES ---------------------------
#
# avconv (sudo apt-get install --no-install-recommends libav-tools)
# ou bien
# ffmpeg (sudo apt-get install --no-install-recommends ffmpeg)
#
################################################################################
# Workaround for grep 2.21 or later
export LC_ALL=C
# Traps
kill_jobs()
{
pkill -TERM -P "$BASHPID"
}
#trap kill_jobs EXIT
# Script variables
version="1.2.0"
################################################################################
# Color definition
export black_fgc="\e[7;0;31m"
export red_fgc="\e[7;0;31m"
export green_fgc="\e[0;32m"
export yellow_fgc="\e[0;33m"
export blue_fgc="\e[1;34m"
export magenta_fgc="\e[0;35m"
export cyan_fgc="\e[0;36m"
export white_fgc="\e[0;37m"
export default_fgc="\e[0;39m"
################################################################################
# Flagging functions
debug_flagger ()
{
echo "$(date +"%d/%m/%Y %H:%M:%S") [DEBUG] "
}
info_flagger ()
{
echo "$(date +"%d/%m/%Y %H:%M:%S") [INFO] "
}
warning_flagger ()
{
echo "$(date +"%d/%m/%Y %H:%M:%S") [WARNING] "
}
critical_flagger ()
{
echo "$(date +"%d/%m/%Y %H:%M:%S") [CRITICAL] "
}
logger ()
{
cr='
'
while read line
do
case "${1}" in
"debug")
echo -e "${blue_fgc}$(debug_flagger)${line}${default_fgc}" >&2
;;
"info")
echo -e "${green_fgc}$(info_flagger)${line}${default_fgc}" >&2
;;
"warning")
echo -e "${yellow_fgc}$(warning_flagger)${line}${default_fgc}" >&2
;;
"critical")
echo -e "${red_fgc}$(critical_flagger)${line}${default_fgc}" >&2
;;
esac
done <<< "${2//\\n/${cr}}"
if [[ "${1}" == "critical" ]]
then
exit 1
fi
}
exit_if_empty ()
{
if [[ ${#1} -eq 0 ]]
then
logger critical "${2}"
fi
}
sanitize ()
{
# echo "${1}" | recode h4..latin1 | sed 's+^[[:blank:]]*++g' | sed 's+[[:blank:]]*$++g' | sed 's+[[:blank:]]\{1,\}+_+g' | iconv -f utf-8 -t ascii//translit | sed 's/[\&"!?;]/_/g' | sed 's/[^[:alnum:]-]/_/g' | sed 's/_\{2,\}/_/g' | sed 's/-\{2,\}/-/g' | sed 's/_-/-/g' | sed 's/^_*\([^_].*[^_]\)_*/\1/g' | sed 's/.*/\u\0/g' | sed 's/^-*//g'
echo "${1}" | perl -MHTML::Entities -alne 'print(decode_entities($_))' | sed 's+^[[:blank:]]*++g' | sed 's+[[:blank:]]*$++g' | sed 's+[[:blank:]]\{1,\}+_+g' | perl -Mutf8 -MText::Unidecode -alne 'use open ":std", ":encoding(utf-8)"; print(unidecode($_));' | sed 's/[\&"!?;]/_/g' | sed 's/[^[:alnum:]-]/_/g' | sed 's/_\{2,\}/_/g' | sed 's/-\{2,\}/-/g' | sed 's/_-/-/g' | sed 's/^_*\([^_].*[^_]\)_*/\1/g' | sed 's/.*/\u\0/g' | sed 's/^-*//g'
}
progressfilt ()
{
local line=""
local prev_progression=0
while read line
do
progression=$(grep -oE "[0-9.]{1,}%" <<< "${line}" | sed 's/%//g' | awk '{if ($1 ~ /[0-9]/) {printf "%6.2f", $1} else {printf "%6.2f", 0}}')
if [[ "${progression}" != "${prev_progression}" && ${#progression} -ne 0 ]]
then
prev_progression=${progression}
echo -ne "\e[F" >&2
logger info "Progression: ${progression}%"
fi
done
}
我试图补充 time.sleep(1)在调用bash脚本之前,也尝试过 sleep(1)在bash脚本中,但是没有办法,崩溃追加
我怎样才能看到问题并解决它
项目的启动板页:https://launchpad.net/~yoggic/+archive/ubuntu/dpluzz/+packages
目前没有回答
相关问题 更多 >
编程相关推荐