购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 系统管理

本节将简单介绍在使用树莓派终端过程中涉及的系统管理操作,如增删用户、修改密码、查看与终止进程、管理服务和关机重启等基础命令。

3.1.1 用户管理

安装完Raspbian系统后,在树莓派桌面的左上角打开系统自带的终端,或者使用SSH软件连接默认打开终端,显示内容如图3.1所示。

图3.1 打开终端

从图3.1中可以看出,树莓派默认的提示命令符如下:

 

     pi@raspberrypi:~ $

这表明我们是在名为raspberrypi的主机上以用户pi的身份登录,并且正处在pi用户的主目录即“~”下。可以在其后输入各种Linux命令,然后按Enter键即可执行。

当然,也可以使用超级管理员root用户登录,命令提示符如下:

 

     root@raspberrypi:~ #

与pi用户不同的是,命令提示符为#,表明这是root用户,默认情况下,树莓派并不会启用root用户,可以通过以下方式启用root用户:

 

     # 先设置密码
     sudo passwd root
     # 输入两次密码(无提示)

再通过以下su命令切换到root用户:

 

     su root
     # 输入密码即可

事实上,所有的Linux系统都带有root用户,而passwd命令主要用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者能用它管理系统用户的密码,只有管理者可以指定用户名称,一般用户只能变更自己的密码,使用方法如下:

 

     passwd 用户名

还可以通过useradd命令增加一个叫作c0c的系统用户,具体如下:

 

     sudo useradd c0c

用户建好之后,使用passwd命令设定用户的密码。如果要删除该用户,可以使用userdel命令实现,命令如下:

 

     sudo userdel c0c

至此,细心的读者可能会发现,当我们新建用户或者删除用户时都带了一个sudo命令(第一次使用时要求输入密码),这表示以系统管理员身份执行这条命令,如果不加这条命令则会提示“Permission denied”权限不足。

3.1.2 进程和服务管理

进程是操作系统上非常重要的概念,所有系统上面运行的数据都会以进程的类型存在。在Linux系统中触发任何一个事件时,系统都会将它定义为一个进程,并且给予这个进程一个ID,称为PID,同时根据触发这个进程的用户,给予这个PID一组有效的权限设置。

当程序处于运行时,我们看不到也摸不着,因此Raspberry Pi OS系统提供了一系列方便的命令来查看正在运行的进程。首先是ps命令,如ps -l命令能查看当前bash下相关进程的全部信息。使用方法如下:

另外,还可以用pstree命令来显示整棵进程树,如图3.2所示。

图3.2 进程树

pstree清楚地显示了程序和进程之间的关系,如果不指定进程的PID号,或者不指定用户名称,则将默认为根进程,显示系统的所有程序和进程信息;如果指定用户或PID,则将以用户或PID为根进程,显示用户或PID对应的所有程序和进程。例如,如果想知道某个用户启动了哪些进程,可以使用pstree指令,执行如下命令:

 

     pstree mysql

当然ps命令也有弊端,它只能显示进程某一时刻的信息。此时可以借助top命令来动态、实时地显示进程状态,并且top命令还提供了一个交互界面,用户可以根据需要,个性化定制自己的输出,更清楚地了解进程的实时状态,如图3.3所示。

图3.3 进程状态

如果要查找指定进程的进程号ID,还可以使用pidof命令,例如,查找nginx的进程号:

 

     pidof nginx
     13312 5371

如果要结束某个进程,可以使用kill命令,后面接上对应进程的PID,具体如下:

 

     kill 3268

kill命令只结束对应的单个进程,如果要结束某个程序的全部进程,可以使用killall实现:

 

     killall nginx

Linux服务管理主要有两种方式,即service和systemctl。其中,service已经逐渐被systemctl取代。本书主要介绍systemctl命令。systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。其中,Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。它的功能是集中管理和配置类UNIX系统,即system daemon,是Linux下的一种init软件。

Systemctl命令常见用法如下。

(1)列出所有可用单元,命令如下:

(2)检查某个服务的运行状态,命令如下:

(3)列出所有服务,命令如下:

(4)重启、停止、启动服务等,命令如下:

 

     pi@raspberrypi:~ $ systemctl restart nginx
     # systemctl restart nginx
     # systemctl stop nginx
     # systemctl reload nginx
     # systemctl status nginx

(5)查询服务是否激活,以及配置开机启动,命令如下:

 

     pi@raspberrypi:~ $ systemctl is-active nginx
     pi@raspberrypi:~ $ systemctl disable nginx
     pi@raspberrypi:~ $ systemctl enable nginx

(6)使用systemctl命令结束服务,命令如下:

 

     pi@raspberrypi:~ $ systemctl kill nginx

(7)列出系统的各项设备、挂载、服务等:

 

     pi@raspberrypi:~ $ systemctl list-unit-files --type
     automount device path snapshot swap timer
     busname mount service socket target

(8)重启、停止、挂起、休眠系统等,命令如下:

3.1.3 系统重启和关机

在3.1.2节中,我们已经通过systemctl命令介绍了系统重启和关机的方法,此外,还可以使用单独的命令来完成对应的操作:

 

     # 重启
     sudo reboot
     
     # 关闭系统并切断电源
     sudo poweroff
     # 凌晨3点14分定时关机
     sudo shutdown -h 03:14
     # 关闭系统
     sudo halt

这里要特别注意halt命令,其与poweroff不同,此命令会在关机前停止所有CPU功能。执行时,结束应用进程、执行sync系统调用、文件系统写操作完成后就会停止内核。推荐使用这种方法关机。 tLh1ksec18u2jaP0yoEOliv82BqIH7nrSt3CaarO98HaucT9hvnMooj6oPHr+I0K

点击中间区域
呼出菜单
上一章
目录
下一章
×