First of all postgresql must be configured with e.g. in /etc/postgresql/12/main/pg_ctl.conf:
pg_ctl_options = '--core-files'
if you remove the -c/--core-file flag no core dump will be produced (not good for issue diagnosis).
By default postgres writes core dump to data directory path.
Check you current kernel.core_pattern configuration:
$ sysctl kernel.core_pattern
kernel.core_pattern = core
You can specify multiple variables that gets substituted:
- %p- pid
- %%- output one '%'
- %u-  uid
- %g-  gid
- %s- signal number
- %t- UNIX time of dump
- %h-  hostname
- %e-  executable filename
It's good idea to include at least %p (pid) in the path, in order to distinguish between consequent crashes.
sysctl -w kernel.core_pattern='/tmp/core.%e.%p'
in order to persist the change after reboot add the config e.g. to /etc/sysctl.conf:
kernel.core_pattern=/tmp/core.%e.%p