Standard 5-field cron's finest granularity is one minute — there's no valid expression for "every 30 seconds." Two real ways to actually get there:
Two cron entries offset by a sleep: one entry runs the job immediately each minute, a second identical entry runs sleep 30 && the same command. Crude, but works with plain cron.
A scheduler with sub-minute support: systemd timers, Quartz (Java), or an application-level scheduler (e.g. node-cron, APScheduler) can express true sub-minute intervals natively — usually the better answer if you're setting this up fresh rather than working around an existing crontab.