Процессы переходят в состояние сна, когда они чего-то ждут, обычно это ввод-вывод.
Ваш процесс будет в S
состоянии, когда он выполняет операции чтения и, возможно, записи, которые блокируют. Может также произойти во время ожидания на семафорах или других примитивах синхронизации.
Вы не можете "разбудить его" - оно будет продолжаться только тогда, когда данные / ресурсы, которые он ожидает, станут доступными.
Это все нормально и ожидаемо, и обычно это не проблема. Как правило, эта «программа» запускается из командной строки без файла:
while (<>) { print; }
будет проводить большую часть своего времени в спящем состоянии, что хорошо - вы не хотите, чтобы он тратил впустую процессор, пока он ожидает ввода пользователя.
Если вы считаете, что это проблема, попробуйте изменить способ ввода-вывода (чтение больших кусков, с кратными размерами блоков базового устройства, ввод-вывод с отображением в памяти и т. Д.).