Tôi đang chạy một chương trình java bên trong trình bao và viết id tiến trình vào tệp văn bản. Vì vậy, khi tôi làm điều này:
nohup java app.Main > /dev/null 2>&1 &
echo $! > /var/run/app.pid
Nó hoạt động. Nhưng tôi thực sự muốn chạy nó như một người dùng khác
su - appuser -c "nohup java app.Main > /dev/null 2>&1 &"
echo $! > /var/run/app.pid
Điều này không hoạt động. Có cách nào để có được id tiến trình của lệnh được khởi chạy với tùy chọn -c không?
su - appuser -c "nohup $JAVA_BIN $JAVA_CLASS > /dev/null 2>&1 & echo \$! > /tmp/appid.tmp"