Issues with using serial.avaliable to start a loop

Try this - UNTESTED

bool printingOK = false;

void loop()
{
  currentTime = millis();
  if (Serial.available() > 0)
  {
    char recentChar = Serial.read();
    if (recentChar == 's' && !printingOK)
    {
      printingOK = true;
      previousPrintTime = currentTime;
    }
  }
  if (currentTime - previousPrintTime >= 2000 && printingOK == true)
  {
    SerialMonitor();
    previousPrintTime = currentTime;
  }
}