When a collegue asked me how to get the full cmdline of a process, I simply replied:
#ps -fewww # as many w as lines you need
When he told me it was not enough I was confident to have the right answer:
# cat /proc/$PID/cmdline
I didn’t know  that /proc/cmdline is limited, and the limit is lower than argv length. Specifically it’s the output of
# getconf PAGE_SIZE
4096
Enjoy with this script
# cat > /tmp/fulla.sh << EOF
#!/bin/bash
sleep 10
EOF
# chmod +x /tmp/fulla.sh; /tmp/fulla.sh {0..2000} &
# cat /proc/${!}/cmdline | wc -c
4096
PAGE_SIZE is the kernel defined page size, and to grow it you have to rebuild your kernel… but you may find some drawbacks ;)
To know something more about argv length – as it depends on POSIX and linux kernel version – you can see:
# man 2 execve
An accepted value is usually 32*PAGE_SIZE = 128k, but some parameters like
#ulimit -s  # stack size
# getconf ARG_MAX
may influence the allowed size.
If you’re interested you can look at the exec() source code ;)