首页 > 代码库 > Linux中的登录、登出、关机、重启命令
Linux中的登录、登出、关机、重启命令
1.1 login:用户登录系统
功能描述:
使用login命令可以允许用户登录系统,如果没有参数,登录时提示输入用户密码。如果该用户不是root,且/etc/nologin文件存在,则不允许登录,改文件的内容会被现实在终端上。(su –命令在执行的时候,就要创建一个login进程,用于切换用户)
命令语法
Login[参数] [用户名]
选项列表1.1
参数 | 解释 |
-h | 使用其他服务器传递远程主机名称来登录,这样他可以被放置在utmp和wtmp中 |
-p | 登录不破坏环境 |
-f | 用来跳过第二次登录身份验证 |
例1.1用户登录
[root @rhel ~]# login
1.2 logout: 退出登录shell
功能描述:
使用logout命令可以使当前操作用户退出登录shell,当是多层shell嵌套时,一层一层的退出,如果是图形界面下在终端中输入命令的话,不断执行logout到打开终端的初始状态就会提示已经没有登录的shell了 。它的作用原理就是在切换用户的时候会产生一个登录shell,直到这个用户退出的时候这个登录shell就会关闭,所以logout的作用就是退出登录的shell!
命令语法
logout
例1-2-1 root退出当前shell
[user1@bogon~]$ su -
Password:
[root@bogon~]# logout
[user1@bogon~]$
例1-2-2 user2退出当前shell(这样是存在安全隐患的,user2不知不觉的就以user1的身份进入系统了,这很危险。所以用户不用时要及时退出登录!但是实际上这种情况很少!)
[user1@bogon~]$ su - user2
Password:
Lastlogin: Sat Mar 25 23:40:46 EDT 2017 on pts/1
[user2@bogon~]$ logout
[user1@bogon~]$
1.3 exit: 退出shell
功能描述:
使用exitt命令可以使当前登录的所有用户都退出shell,当是多层shell嵌套时,exit和logout一样是一层一层退出嵌套shell,如果是图形界面上打开终端的话,执行exit后就关闭了终端。意思就是说打开终端的时候,会调用一个shell来让当前登录的用户显示,这个shell不是登录shell,注意和logout的区别!
命令语法
exit[参数]
功能描述:
使用logout命令可以使当前操作用户退出登录shell,当是多层shell嵌套时,一层一层的退出,当退出到最后一层时,再次logout就会提示已经没有登录的shell了 。他只是退出
Shell,并不退出登录!
命令语法
logout [参数] [用户名]
例1-3-1 root退出当前shell
[user1@localhost~]$ su -
Password:
Lastlogin: Sun Mar 26 22:46:12 EDT 2017 on pts/0
[root@localhost~]# exit
logout
[user1@localhost~]$
例1-3-2 图形界面下user1用户打开终端后,退出打开的终端shell后回到图形界面
[user1@localhost~]$ exit
[user1@bogon~]$
补充:shell、控制台、终端的区别
名称 | 解释 |
控制台
|
显示系统消息的终端就叫控制台,Linux默认所有虚拟终端都是控制台,都能显示系统消息。 |
终端
| 分为物理终端(键盘鼠标等)和虚拟终端(程序),下面说的终端都是指的虚拟终端。一般地,Linux发行版提供7个虚拟屏幕,1~6号是控制台终端,第7个上面跑X-Window。红旗Linux桌面4.0只提供了2个控制 台终端,第3个跑X-Window,如果需要更多控制台终端,可以修改“/etc/inittab”,找“# Run gettys in standard runlevels”一行,下面以数字和“#”开头的6行都是控制台终端说明。以“#”开头的行在大多数配置文件里表示注释,即该行不生效。把那几个 “#”去掉,重新启动后即可获得全部6个控制台终端。 |
Shell
| Shell就是操作系统内核和用户之间的一个接口,它主要是接受用户的命令,解释用户的命令然后传给内核操作。比如在命令行中执行命令,就要产生shell来解释执行的命令!shell就类似于window下的dos,但是它比dos更强大,可以支持脚本程序! |
1.4 nologin:不予许用户登录
功能描述:
使用nologin命令可以限制用户通过shell的登录系统。如果/etc/nologin文件存在,显示其内容给用户,而不是默认的消息。如果尝试以这类用户登录,就在log里添加记录,然后在终端输出This account is currentlynot available信息。一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统。
命令语法
nologin
使用的地方在启动服务时居多,这就得说说虚拟用户了。
虚拟用户:就是进程,这些用户是虚拟的不可以登录:(以nologin结尾的)
例1-4-1 查看/etc/passwd文件中以nologin结尾的虚拟用户(就是服务)
[root@localhost/]# grep "nologin$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
从上例看出有很多的虚拟用户,bin、daemon、adm等,他们都是以nologin结束的,表示的都是不可以通过shell登录的用户,只是作为服务启动的发起者!接下来启动Apache服务,首先是root用户权限,接着为了安全起见,下面的服务都用虚拟用户Apache来启动
例1-4-2 启动Apache服务
[root@localhost/]# systemctl start httpd
[root@localhost/]# ps -ef | grep http
root 24872 1 1 12:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24877 24872 0 12:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24878 24872 0 12:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24879 24872 0 12:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24880 24872 0 12:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24882 24872 0 12:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 24887 3466 0 12:36 pts/0 00:00:00 grep --color=auto http
1.5 sulogin:单用户登录
功能描述:
使用sulogin命令可以进行单用户(root)登录,在启动时shell将不会读取/etc/profile文件或$HOME/.profile文件,这和init 1 的作用是相似的
命令语法
sulogin [options] [tty]
选项列表1.5
参数 | 解释 |
-e | 如果默认的方法获得root密码失败,手动检查/ etc / passwd和/etc/shadow获取密码。如果他们被损坏或不存在,sulogin开始一个不要求一个密码的root shell |
-p | 单用户shell调用一个破折号来代表参数中的第一个参数 |
-t | 指定的最大的时间等待用户输入。默认情况下,sulogin永远等待。 |
例1-5-1查看user1是否可以使用sulogin
[user1@localhost~]$ sulogin
sulogin:only root can run this program.
1.6 poweroff:关闭系统
功能描述:
使用poweroff命令可以关闭Linux系统,关闭记录会被写入/var/log/wtmp(一个二进制文件,记录每个用户的登录次数和持续时间等信息)日志文件中
命令语法
poweroff [option]
选项列表1.5
参数 | 解释 |
-p | 如果默认的方法获得root密码失败,手动检查/ etc / passwd和/etc/shadow获取密码。如果他们被损坏或不存在,sulogin开始一个不要求一个密码的root shell |
-f | 强制关机,不调用shutdown,就和直接按电源键关机一样! |
-w | 并不关闭系统,只是将关机日志写入/var/log/wtmp文件中 |
-d | 关闭系统,但是不将关机日志写入/var/log/wtmp文件中 |
例1-6-1 查看/var/log/wtmp文件内容(last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端tty或时间显示相应的记录)
[root@localhost~]# last
user1 pts/0 :0 Mon Mar 2707:26 still logged in
user1 pts/0 :0 Mon Mar 27 00:19- 00:20 (00:00)
user1 pts/0 :0 Sun Mar 26 22:47- 00:19 (01:31)
user1 pts/0 :0 Sun Mar 26 22:16- 22:46 (00:29)
user1 pts/0 :0 Sun Mar 26 00:16- 22:16 (22:00)
user1 pts/0 :0 Sat Mar 25 23:49 - 00:15 (00:25)
root pts/1 192.168.1.104 Sat Mar 25 23:42 - 07:28 (1+07:46)
……
1.7 shutdown:关机或重启系统
功能描述:
使用shutdown命令可以安全的关闭或重启Linux系统。在关机前使用此命令,系统会给在线的每个用户发送即将关机的提示,并且login进程会被冻结,不再允许新的用户登录。根据参数来进行相应的定时关机或重启操作。
命令语法
sulogin [options] [tty]
选项列表1.7
参数 | 解释 |
-k | 不关机,只是发送警告信息给所有用户,用于维护系统时候 |
-r | 重启系统 |
-h | 关闭系统 |
-c | 取消运行的shutdown命令 |
例1-7-1 立即关闭系统
[root@localhost~]# shutdown -h now
例1-7-2 立即关闭系统并发出警告
[root@localhost~]# shutdown -h now “system willshutdown now”
例1-7-3 定时28分钟后关闭系统
[root@localhost~]# shutdown -h +28
Shutdownscheduled for Mon 2017-03-27 09:09:14 EDT, use ‘shutdown -c‘ to cancel.
[root@localhost~]# shutdown -c
Broadcastmessage from root@localhost.localdomain (Mon 2017-03-27 08:41:23 EDT):
Thesystem shutdown has been cancelled at Mon 2017-03-27 08:42:23 EDT!
[root@localhost~]#
例1-7-4 定时在20:44关闭系统
[root@localhost~]# shutdown -h 20:50
Shutdownscheduled for Mon 2017-03-27 20:50:00 EDT, use ‘shutdown -c‘ to cancel.
1.8 halt:关闭系统
功能描述:
使用halt命令可以关闭Linux系统,关闭记录会被写入/var/log/wtmp(一个二进制文件,记录每个用户的登录次数和持续时间等信息)日志文件中
命令语法
halt [option]
选项列表1.5
参数 | 解释 |
-i | 关掉系统前关闭所有的网络接口 |
-f | 强制关机,不调用shutdown,就和直接按电源键关机一样! |
-w | 并不关闭系统,只是将关机日志写入/var/log/wtmp文件中 |
-d | 关闭系统,但是不将关机日志写入/var/log/wtmp文件中 |
1.9 reboot:重启系统
功能描述:
使用reboot命令可以重启Linux系统,关闭记录会被写入/var/log/wtmp(一个二进制文件,记录每个用户的登录次数和持续时间等信息)日志文件中
命令语法
reboot [option]
选项列表1.5
参数 | 解释 |
-i | 关掉系统前关闭所有的网络接口 |
-f | 强制关机,不调用shutdown,就和直接按电源键关机一样! |
-w | 并不关闭系统,只是将关机日志写入/var/log/wtmp文件中 |
-d | 关闭系统,但是不将关机日志写入/var/log/wtmp文件中 |
补充:poweoff、shutdown、halt、int0区别
shutdown实际上是调用init 0,init 0会cleanup一些工作然后调用halt或者poweroff。其实主要区别是halt和poweroff,做没有acpi的系统上(Windows2000之前的系统),halt只是关闭了系统,电源还在工作,你得手动取按电源键才能彻底关机,而poweroff会发送一个关闭电源的信号给acpi。在现在的系统上这几个命令除了个别参数不一样外,作用都是一样的了,都是/bin/systemctl文件的链接文件,见下例
例 补充-1
[root@localhost~]# ll /sbin/ | grep "systemctl$"
lrwxrwxrwx.1 root root 16 Mar 11 04:41 halt-> ../bin/systemctl
lrwxrwxrwx.1 root root 16 Mar 11 04:41 poweroff ->../bin/systemctl
lrwxrwxrwx.1 root root 16 Mar 11 04:41reboot -> ../bin/systemctl
lrwxrwxrwx.1 root root 16 Mar 11 04:41runlevel -> ../bin/systemctl
lrwxrwxrwx.1 root root 16 Mar 11 04:41 shutdown-> ../bin/systemctl
lrwxrwxrwx.1 root root 16 Mar 11 04:41telinit -> ../bin/systemctl
参考文献:
[1] 於岳. Linux命令应用大词典. 北京: 人民邮电出版社,2015.
本文出自 “11929788” 博客,请务必保留此出处http://11939788.blog.51cto.com/11929788/1910924
Linux中的登录、登出、关机、重启命令