Question: I have in my crontab the following

`15 */4 * * * ...`

My original intent was that I would run ... every 4 hours from when the computer boots up. If I power on at 8 am, it would run at 8, 12, 16, 20, ...; if I power on at 9am it would run at 9, 13, 17, 21, ...

My observation is that crontab seems to divide the hour by 4 and if the remainder is 0 it executes.

Is there a way I can achieve the former rather than the latter?

Answer: 
The number after `/` is called a step value and it starts counting from hour `00` to hour `23` for hours ... So:

```
15 */4 * * *   ...

```

translates to *at minute 15 past every 4th hour starting from hour `00`* ... **not** from reboot.

You might want:

```
@reboot sleep 4h ...

```

That is wait for 4 hours after the system starts then run the command ... That, however, will run the command only once after each reboot ... To continue running the command every 4 hours after each reboot until shutdown, then you can add your command/s to a script file like so:

```bash
#!/bin/bash

while true; do
  # command/s here will first run immediately after boot
  sleep 4h
  # command/s here will first run 4 hours after boot
done

```

then use that script file in the crontab line like so:

```
@reboot /bin/bash /full/path/to/scriptfile

```
Have you considered the use of at as a scheduler?

At boot time, run a script that schedules an 'at' job four hours hence and passes the time it ran to something the at job can read (e.g. a file somewhere, e.g. within the at job itself, e.g. a parameter passed to the 'at' job, there are many ways you can pass the parameter).

When the 'at' job runs, at some point in the script run it schedules another 'at' job exactly 4 hours after it was launched. This will only suffer schedule creep or not-four-hourness at times your system clock enters or exist DST (twice a year if the timezone it runs in uses daylight saving) or when the system clock gets a time adjustment...