Не удается получить .bashrc из .bash_profile при использовании `sudo su - username -c`

Is there a way to log the stderr from ffmpeg inside the script to see why the command fails inside the script but works when run directly?

Вот так, перенаправьте поток 2, stderr, в файл в tmp. Да, и поскольку вы не хотите, чтобы он постоянно перезаписывал файл tmp, добавьте PID к его имени:

my_command 2> /tmp/ffmpeg_error$$.log

Теперь применим к вашему ffmpeg:

ffmpeg -f x11grab -s 1000x563 -framerate 30 -i $DISPLAY+10,151 -f pulse -ac 2 -i default -c:v libx264 -preset ultrafast -tune zerolatency -x264opts keyint=30:min-keyint=10 -b:v 2000k -pix_fmt yuv420p -s 1000x562 -c:a aac -b:a 160k -ar 44100 -t '4:00:00' -threads 0 -f flv rtmp://IPADDRESS:1935/live1/$CHANNEL 2> /tmp/ffmpeg_error$$.log
0
21.01.2020, 03:41
1 ответ

Файл .bashrcна самом деле предназначен для использования в интерактивных оболочках -, чтобы позволить ему быть источником в не -интерактивной среде, такой как bash -cили su -c, без ошибок, добавьте «интерактивный тест» где-нибудь в верхней части файла.

Например, начало файла Ubuntu по умолчанию .bashrc(, скопированного из /etc/skelпри создании учетной записи ), выглядит как:

$ head /etc/skel/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Итак, скорее всего, ваш.bashrcуспешно получает источник -, но возвращается до достижения команд, изменяющих ваш PATH.

1
28.01.2020, 02:38

Теги

Похожие вопросы