Linux 系统重启——如何执行系统重启终端和 Python/C++

本文介绍了执行 Linux 系统重启的多种方法。 我们将回顾从终端重新启动 Linux 系统的步骤,还会看到相同的 Python 和 C++ 实现。 终端是 Linux 作为操作系统最有用的方面之一。 从断开网络到打开应用程序,Linux 终端在几秒钟内完成所有工作。 在本文中,我们将通过各种方法来重新启动系统,而无需使用 GUI。

从终端执行 Linux 系统重启

可以有各种命令来完成重启系统或调度系统重启的任务。 让我们来看看一些突出的。

1.使用关机命令

顾名思义, shutdown 命令可用于管理系统的状态,即关机或重启。 为了立即重启系统,我们运行:

sudo shutdown -r now 

'-r' 选项指定重新启动而不是关闭电源的命令。 这 now 关键字通知命令立即继续执行任务。

shutdown 命令可用于安排在几分钟或几小时内重新启动。 例如,如果我们想在 30 分钟内安排重启,我们运行:

sudo shutdown -r +30 

上面的命令指定了确切的执行时间,时间一到就执行。

在命令被调度并且我们不希望重新启动系统后,我们可以使用 '-c' 旗帜:

sudo shutdown -c 

要了解更多关于 shutdown 命令,我们可以通过键入来转到手册页 man shutdown 在终端。

2.使用reboot命令

系统重启可以被视为软重启,即操作系统在关闭系统之前关闭所有正在运行和挂起的程序。 这 reboot 命令在本质上执行干净关闭,它类似于正常的系统重新启动。 我们需要简单地运行:

sudo reboot 

reboot 命令通常调用 systemctl,这是系统管理器的控制命令。 可以使用 '-f' 选项

sudo reboot -f 

reboot 命令是系统状态管理三重奏的一部分。 另外两个是 haltpower-off 执行由他们的名字代表的任务。

3.使用telinit命令

Linux 系统有一个运行级别的概念,它基本上定义了为实现特定系统状态而要运行的脚本或守护进程的列表。 共有 7 个运行级别。 运行级别 6 保留用于系统重新启动。

telinit 命令只是修改当前运行级别以实现系统的特定状态。 为了重新启动系统,我们运行:

sudo telinit 6 

上面的命令执行运行特定脚本和其他后台进程以重新启动系统的工作。 有手册页 runleveltelinit 以获取有关此主题的更多知识。

使用 Python 重启 Linux 系统

为了使用 Python 脚本重新启动 Linux,我们使用了著名的 os 模块。 它可以轻松地向 Linux 终端发送命令,这些命令可以作为一般键入的命令执行。

为了更好的用户体验,可以对 Python 脚本进行一些添加,例如 主菜单 和一个 取消问题.

1. 主菜单

Python 脚本要求用户做出选择,是请求关闭电源还是重新启动。

import os  # The Main menu print("tMAIN MENU") print("Enter P for Power-off") print("Enter R for Restart") print()  # User's choice choice = input("Enter your choice: ") 

2. 构建所需的命令

在用户提及他/她的要求后,将构建适当的命令。 这包括计划关闭的分钟数。

# Some sanity checks if len(choice) == 1 and (choice.upper() == 'P' or choice.upper() == 'R'): 	 	# Command to be used eventually 	command = "shutdown"  	# User input for scheduling shutdown 	try: 		minutes = int(input("Enter number of minutes: ")) 	except ValueError: 		print("Something wrong in input") 		quit()  	# Power-off command 	if choice.upper() == 'P': 		command += " -P" + " +" + str(minutes) 		os.system(command)  	# Reboot command	 	elif choice.upper() == 'R': 		command += " -r" + " +" + str(minutes) 		os.system(command)	 	else: 		print("Something went wrong")	 

首先,代码对输入进行一些完整性检查,然后它接受一个整数来表示关闭延迟的分钟数。 在我们获得所有信息后,我们使用 system() 用于将命令中继到终端以正确执行的功能。

这里要注意的关键是,Python 脚本最终会执行 shutdown 前面讨论过的命令。

3. 取消请求

在 Python 脚本的末尾,会询问用户是否要取消关闭请求。

# Cancellation Question 	choice = input("Do you want to cancel? (Y/N) : ")  	# Cancelling the shutdown 	if choice.upper() == 'Y': 		os.system("shutdown -c")		 

如果用户决定取消,则发送相应的取消请求以执行。

4. 完整的 Python 代码来执行 Linux 系统重启

import os  # The Main menu print("tMAIN MENU") print("Enter P for Power-off") print("Enter R for Restart") print()  # User's choice choice = input("Enter your choice: ")  # Some sanity checks if len(choice) == 1 and (choice.upper() == 'P' or choice.upper() == 'R'): 	 	# Command to be used eventually 	command = "shutdown"  	# User input for scheduling shutdown 	try: 		minutes = int(input("Enter number of minutes: ")) 	except ValueError: 		print("Something wrong in input") 		quit()  	# Power-off command 	if choice.upper() == 'P': 		command += " -P" + " +" + str(minutes) 		os.system(command)  	# Reboot command	 	elif choice.upper() == 'R': 		command += " -r" + " +" + str(minutes) 		os.system(command)	 	else: 		print("Something went wrong")	  	print()  	# Cancellation Question 	choice = input("Do you want to cancel? (Y/N) : ")  	# Cancelling the shutdown 	if choice.upper() == 'Y': 		os.system("shutdown -c")		 

使用 C++ 重启 Linux

使用C++重启Linux的过程和上面的过程差不多。 新增功能说明如下:

  • 系统() – 用于从代码向 Linux 终端发送命令的 C/C++ 函数。
  • c_str() – 该函数将字符串转换为 char*,这是所需的参数 系统() 功能。

除了上述两个函数外,C++ 代码遵循 Python 脚本中使用的过程。

完整的 C++ 代码

#include <iostream> using namespace std;  int main(){ 	 	// The Main menu 	cout<<"tMAIN MENU"<<endl; 	cout<<"Enter P for Power-off"<<endl; 	cout<<"Enter R for Restart"<<endl; 	cout<<endl; 	cout<<"Enter your choice: ";  	// User's choice 	char choice; 	cin>>choice;  	// Some sanity checks 	if (choice == 'P' or choice == 'R'){ 		 		// Command to be used eventually 		string command = "shutdown";  		// User input for scheduling shutdown 		cout<<"Enter number of minutes: "; 		string minutes; 		cin>>minutes;  		// Power-off command 		if(choice == 'P'){ 			command += " -P"; 			command += " +"; 			command += minutes;   			system(command.c_str()); 		} 		// Reboot command	 		else if(choice == 'R'){ 			command += " -r"; 			command += " +"; 			command += minutes; 			system(command.c_str()); 		} 		else 			cout<<"Something went wrong"<<endl;	  		cout<<endl;  		// Cancellation Question 		cout<<"Do you want to cancel? (Y/N) : "; 		cin>>choice;  		// Cancelling the shutdown 		if(choice == 'Y') 			system("shutdown -c");		 	} 	return 1; } 

结论

这使我们到本文的结尾! 在没有 GUI 的情况下,Linux 允许我们以我们今天在这里看到的各种方式执行系统重启。 此外,作为一名在 Linux 上工作的程序员,您可以使用此处编程片段中的想法在您的代码中实现。

最后,如果你想了解更多关于任何提到的命令,只需输入 man . man 命令是 Linux 书呆子的完美文档。

我们希望这篇通过终端重启 Linux 的文章容易理解。 感谢您的阅读。