Is there a way to run a shell script on a custom cron?
I believe you can edit the crontab or by talking to hosting provider you will be able to edit the crontab file.

In case, if you have to do it in custom module using Elysia Cron API, I assume you can do it following way : 

function example_cronapi($op, $job = NULL) {
  $items['example_shell_cron'] = array(
    'description' =&gt; 'Send mail with news',
    'rule' =&gt; '0 */4 * * *', // Every 4 hours
  );
  return $items;
}


function example_shell_cron() {
  shell_exec ('wget --quiet http://www.example.com/custom-sitemap.xml --output-document - |
egrep -o "http://www.example.com/[^&lt;]+" | wget --delete-after -i -');
}