diff --git a/save_command_strategies/linux_procfs.sh b/save_command_strategies/linux_procfs.sh new file mode 100755 index 0000000..ff8231f --- /dev/null +++ b/save_command_strategies/linux_procfs.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +PANE_PID="$1" +COMMAND_PID=$(pgrep -P $PANE_PID) + +exit_safely_if_empty_ppid() { + if [ -z "$PANE_PID" ]; then + exit 0 + fi +} + +full_command() { + [[ -z "$COMMAND_PID" ]] && exit 0 + cat /proc/${COMMAND_PID}/cmdline | xargs -0 printf "%q " +} + +main() { + exit_safely_if_empty_ppid + full_command +} +main diff --git a/scripts/restore.sh b/scripts/restore.sh index 355ee9a..c1a4e49 100755 --- a/scripts/restore.sh +++ b/scripts/restore.sh @@ -299,7 +299,7 @@ restore_all_pane_processes() { if restore_pane_processes_enabled; then local pane_full_command awk 'BEGIN { FS="\t"; OFS="\t" } /^pane/ && $11 !~ "^:$" { print $2, $3, $7, $8, $11; }' $(last_resurrect_file) | - while IFS=$d read session_name window_number pane_index dir pane_full_command; do + while IFS=$d read -r session_name window_number pane_index dir pane_full_command; do dir="$(remove_first_char "$dir")" pane_full_command="$(remove_first_char "$pane_full_command")" restore_pane_process "$pane_full_command" "$session_name" "$window_number" "$pane_index" "$dir"