The only reliable way is via /proc/PID/exe, which will work even if the executable has been removed, or it never existed in the first place (as when executing a file created with memfd_create() via fexecve() or execveat(AT_EMPTY_PATH).
Both /proc/PID/comm and /proc/PID/cmdline can be easily faked by the process itself (the former via prctl(PR_SET_NAME), the latter just by overwriting the argv[] strings).
How does the file
commcontainskworker/3:1-xfs-reclaim/sda2without getting truncated to 15 places (+\nto be 16)?
That's a kernel thread, not a userland process, and different rulesrules apply ;-)