Serial Interrupt from RX pin

The HardwareSerial implementation (.cpp) does use the RX interrupt, and puts the received data in a ring buffer for the sketch to read later...

Even if you modified the HardwareSerial implementation to call one of your functions when it copied '>' into the ring buffer (which is not hard to do, but does create a mess that is hard to look after as new versions of the Arduino software are released) there is still the problem that you are using humungous delay()s in your code.

If you delay(10000) in your code, then the sketch can not respond sensibly to the command for 10 seconds!

If you really want to keep the structure of the code relatively unchanged you need to do something like

static char cmd_i = 0 ;
define CMD_L 10
static char cmd[CMD_L] ;

void
checkSerial(void)
{
    if (Serial.available())
    {
        char ch ;
        if (cmd_i >= CMD_L) 
            cmd_i = 0 ;
        cmd[cmd_i++] = ch = Serial.read() ;
        if (ch == '>')
            checkCommand() ;
    }
}

static bool abortDelay = false ;
void
my_delay(int n)
{
   abortDelay = false ;
   long end = millis() + n ;
   while (end > millis())
   {
       checkSerial() ;
       if (abortDelay)
           return ;
   }
}

then call my_delay() rather than the normal one.