在开发Linux内核或者驱动中,有时会发生内核错误,这个时候SysRq将会非常有用。它是一个组合键,用于恢复系统,一般是Alt+SysRq+commandkey,在很多系统中SysRq是Print Screen键。
首先要检查 /proc/sys/kernel/sysrq,看其是不是1,如果是1则代表SysRq打开了。
下面是对应的commandkey及其作用:
- ‘k’ – Kills all the process running on the current virtual console.
- ‘s’ – This will attempt to sync all the mounted file system.
- ‘b’ – Immediately reboot the system, without unmounting partitions or syncing.
- ‘e’ – Sends SIGTERM to all process except init.
- ‘m’ – Output current memory information to the console.
- ‘i’ – Send the SIGKILL signal to all processes except init
- ‘r’ – Switch the keyboard from raw mode (the mode used by programs such as X11), to XLATE mode.
- ‘s’ – sync all mounted file system.
- ‘t’ – Output a list of current tasks and their information to the console.
- ‘u’ – Remount all mounted filesystems in readonly mode.
- ‘o’ – Shutdown the system immediately.
- ‘p’ – Print the current registers and flags to the console.
- ’0-9′ – Sets the console log level, controlling which kernel messages will be printed to your console.
- ‘f’ – Will call oom_kill to kill process which takes more memory.
- ‘h’ – Used to display the help. But any other keys than the above listed will print help.
同样我们也可以echo 对应的key到/proc/sysrq-trigger中,比如这样:
echo "b" > /proc/sysrq-trigger
不同的字符含义如下:
- unRaw (take control of keyboard back from X11,
- tErminate (send SIGTERM to all processes, allowing them to terminate gracefully),
- KIll (send SIGILL to all processes, forcing them to terminate immediately),
- Sync (flush data to disk),
- Unmount (remount all filesystems read-only),
- reBoot