0%

我也是有身份…证的人 之 id

id命令用于显示用户的以及其所属群组的ID。

官方定义为:

id - print real and effective user and group IDs

语法

1
$ id [OPTION]... [USER]

参数说明

  • -g, --group:仅仅显示组的ID
  • -G, --groups:显示所有组的IDs
  • -u, --user:打印用户的ID

默认使用

显示当前用户信息

1
2
$ id 
uid=1000(user) gid=1000(user) groups=1000(user),980(data),1006(monitor)

可以看到用户user的ID及组ID均为1000,该用户还属于data和monitor组。

显示用户群组的ID

1
2
$ id -g
1000

仅显示用户组的ID

id 我也是有身份…证的人

id命令用于显示用户的以及其所属群组的ID。

官方定义为:

id - print real and effective user and group IDs

语法

1
$ id [OPTION]... [USER]

参数说明

  • -g, --group:仅仅显示组的ID
  • -G, --groups:显示所有组的IDs
  • -u, --user:打印用户的ID

默认使用

显示当前用户信息

1
2
$ id 
uid=1000(user) gid=1000(user) groups=1000(user),980(data),1006(monitor)

可以看到用户user的ID及组ID均为1000,该用户还属于data和monitor组。

显示用户群组的ID

1
2
$ id -g
1000

仅显示用户组的ID

时光总是催人老 time

.. note::

林花谢了春红,太匆匆。无奈朝来寒雨晚来风。

  • 李煜《相见欢·林花谢了春红》

Linux time命令的用途,在于测量指定命令消耗的时间。

最常用的在于大概评估一个程序的运行时间。

这个命令很容易给人的印象是与date混淆起来

官方定义为:

time - time a simple command or give resource usage

可以给出包括系统的粗略时间。

语法

1
$ time [options] command [arguments...]

参数

​ - 可以认为没有参数

示例

会显示程序或命令执行的消耗时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ time ls /var
account crash games lib log ......

real 0m0.014s
user 0m0.003s
sys 0m0.010s


$ time ps -aux
root 295490 0.0 0.0 0 0 ? S Feb20 0:10 [ldlm_cb00_019
root 297717 0.0 0.0 0 0 ? S< Jan29 0:04 [kworker/58:1H
root 304801 0.0 0.0 0 0 ? S Mar19 0:00 [kworker/1:1]
root 311110 0.0 0.0 0 0 ? S Mar20 0:00 [kworker/66:0]
root 313146 0.0 0.0 0 0 ? S Mar20 0:01 [kworker/73:2]
root 313461 0.0 0.0 0 0 ? S< Jan29 0:00 [kworker/44:2H
root 313914 0.0 0.0 0 0 ? S Feb21 0:10 [kworker/9:2]
root 314118 0.0 0.0 0 0 ? S Feb21 3:34 [kworker/18:1]
root 315801 0.0 0.0 0 0 ? S Mar20 0:00 [kworker/79:2]

real 0m0.180s
user 0m0.019s
sys 0m0.114

唯一需要留意的是上面的三个含义:

  1. real : 程序从开始调用到最后终止之间经过的实时时间
  2. user : 程序本身,以及它所调用的库中的子例程使用的CPU 时间
  3. sys : 程序直接或间接调用的系统调用执行的CPU 时间

Linux的 time 命令

Linux time命令的用途,在于测量指定命令消耗的时间。

最常用的在于大概评估一个程序的运行时间。🔑

这个命令很容易给人的印象是与date混淆起来

官方定义为:

time - time a simple command or give resource usage

可以给出包括系统的粗略时间。

语法

1
$ time [options] command [arguments...]

参数

​ - 可以认为没有参数

1⃣ 示例

会显示程序或命令执行的消耗时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ time ls /var
account crash games lib log ......

real 0m0.014s
user 0m0.003s
sys 0m0.010s

#=====================================

$ time ps -aux
root 295490 0.0 0.0 0 0 ? S Feb20 0:10 [ldlm_cb00_019
root 297717 0.0 0.0 0 0 ? S< Jan29 0:04 [kworker/58:1H
root 304801 0.0 0.0 0 0 ? S Mar19 0:00 [kworker/1:1]
root 311110 0.0 0.0 0 0 ? S Mar20 0:00 [kworker/66:0]
root 313146 0.0 0.0 0 0 ? S Mar20 0:01 [kworker/73:2]
root 313461 0.0 0.0 0 0 ? S< Jan29 0:00 [kworker/44:2H
root 313914 0.0 0.0 0 0 ? S Feb21 0:10 [kworker/9:2]
root 314118 0.0 0.0 0 0 ? S Feb21 3:34 [kworker/18:1]
root 315801 0.0 0.0 0 0 ? S Mar20 0:00 [kworker/79:2]

real 0m0.180s
user 0m0.019s
sys 0m0.114

唯一需要留意的是上面的三个含义:

  1. real : 程序从开始调用到最后终止之间经过的实时时间
  2. user : 程序本身,以及它所调用的库中的子例程使用的CPU 时间
  3. sys : 程序直接或间接调用的系统调用执行的CPU 时间

雁过留痕的 history

.. _linux_history_beginner:

.. note::
雁过留痕,人过留名。

  • 晏殊 《浣溪沙》

history命令用于显示用户以前执行过的历史命令,并且能对历史命令进行追加和删除等操作。

如果你经常使用Linux命令,那么使用history命令可以有效地提升你的效率。

语法比较简单:

1
$ history [OPTIONS] [..]

常用参数:

  • -a 将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件
  • -c 清空当前历史命令列表
  • -d 删除历史命令列表中指定序号的命令
  • -n 从命令历史文件中读取本次Shell会话开始时没有读取的历史命令

显示所有的历史命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ history

1 sudo apt get update
2 sudo apt update
3 sudo apt upgrade
4 sudo apt install vim
5 ls
6 pwd
7 cd
8 ls
9 sudo apt install vim
10 sudo apt search pgplot
11 bash go.sh
12 sudo apt install zsh
13 bash down.sh
14 exit
15 echo $PS1
16 bash
17 exit
18 sh test.sh
19 bash
20 exit
21 rsync -rv --progress user@192.168.1.123:~/data1/ .
22 rsync -rv --progress user@192.168.1.123:~/src/ .
......

列出最近的几条命令

history后面跟上数字,就可以列出最近的几条命令:

1
2
3
4
$ history 3
8540 pwd
8541 echo $PATH
8542 git status

删除部分命令

可以通过-d参数来删除某一条或者某些历史命令,支持正则表达式

1
2
3
4
5
# 删除第35条历史命令
$ history -d 35

# 删除第31到39条历史命令
$ histor -d 3{1..9}

删除全部命令

如果登陆某些调试机器,后面将不在使用,考虑到安全性,可以删除操作过的所有历史,通过-c参数,即clear的意思。

1
$ history -c

此时将没有任何历史操作。

炫技 - 如何获取使用的命令及频率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort –nr

967 ls
507 cd
199 vim
199 python
165 cp
152 less
105 mv
95 rm
94 ll
90 echo
85 bash
72 cat
66 apt
59 pwd
51 mkdir
...

history命令 – 显示与操纵历史命令

history命令用于显示用户以前执行过的历史命令,并且能对历史命令进行追加和删除等操作。

如果你经常使用Linux命令,那么使用history命令可以有效地提升你的效率。

语法格式: history [参数] [目录]

常用参数:

-a 将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件
-c 清空当前历史命令列表
-d 删除历史命令列表中指定序号的命令
-n 从命令历史文件中读取本次Shell会话开始时没有读取的历史命令
-r 读取命令历史文件到当前的Shell历史命令内存缓冲区
-s 将指定的命令作为单独的条目加入命令历史内存缓冲区。在执行添加之前先删除命令历史内存缓冲区中最后一条命令
-w 把当前的shell历史命令内存缓冲区的内容写入命令历史文件

参考实例

显示最近的10条命令:

1
[root@linuxcool ~]# history 10  

将本次登录的命令写入历史文件中:

1
[root@linuxcool ~]# history -w

将命令历史文件中的内容读入到目前shell的history记忆中 :

1
[root@linuxcool ~]# history -r  

将当前Shell会话的历史命令追加到命令历史文件中:

1
[root@linuxcool ~]# history -a  

清空当前历史命令列表:

1
[root@linuxcool ~]# history -c 

使用HISTCONTROL来消除命令历史中的连续重复条目

在下面的例子中pwd被输入了三次,当你使用history的时候,你会看到这三条命令连续出现。设置HISTCONTROLignoredups,来消除重复命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# pwd

# pwd

# pwd

# history | tail -4

44 pwd

45 pwd

46 pwd

47 history | tail -4

[注: 上面pwd被执行了三次之后,历史中有三条pwd命令]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# export HISTCONTROL=ignoredups

# pwd

# pwd

# pwd

# history | tail -3

56 export HISTCONTROL=ignoredups

57 pwd

58 history | tail -4 [注:即使上面pwd被执行了三次,历史中也只有一条pwd命令]

用HISTIGNORE让history在存储时忽略某些指令

有时你不想在记录里看到诸如pwd,ls之类的基本指令,可以用HISTIGNORE忽略这些指令。

注意在HISTIGNORE中添加ls,只忽略“ls”不忽略ls –l。一定要准确的写出要忽略的的指令。

1
# export HISTIGNORE=”pwd:ls:ls –ltr:”

优雅地关机 - halt

.. _linux_halt_beginner:

.. note::
一曲新词酒一杯,去年天气旧亭台。

  • 晏殊 浣溪沙

Linux halt, poweroff, reboot 用来挂起、关机或者重启机器,成功后返回0。

这不是一个命令,这是三个命令,只不过三个命令的参数都是一致的。

参考 Linux reboot 命令。

:ref:Reboot <linux_reboot_beginner>

Linux poweroff 命令

参考 Linux reboot 命令。

Linux reboot/poweroff/halt 命令

.. _linux_reboot_beginner:

.. note::

世事漫随流水,算来一梦浮生。

  • 李煜《乌夜啼·昨夜风兼雨》

Linux halt, poweroff, reboot 用来挂起、关机或者重启机器,成功后返回0。

这不是一个命令,这是三个命令,只不过三个命令的参数都是一致的。

官方定义为:

halt, poweroff, reboot - Halt, power-off or reboot the machine

其实这三个命令都可以通过shutdown来执行,并且相对而言shutdown的参数还更多一些。

语法

使用方法如下:

1
2
3
4
5
$ halt [OPTIONS...]

$ poweroff [OPTIONS...]

$ reboot [OPTIONS...]

参数如下所示:

  • --halt 将机器挂起,三个命令均相同
  • -p, --poweroff 将机器关机,三个命令均相同
  • --reboot 将机器重启,三个命令均相同
  • -f, --force 立即执行挂起、关机和重启,一般对于force而言,除非万不得已,否则进来莫用
  • -n, --no-sync 在挂起、关机或重启前不对硬盘进行同步,这个很危险呀,进来不要用呀
  • --no-wall 在挂起、关机或重启前不发送警告信息,对于多用户不友好

立即关机

接下来的三个命令一致,都是将电脑关机,不过这个用法总归感觉怪怪的,所以还是分开各司其职比较好。比如关机还是poweroff,重启还是reboot吧。

1
2
3
4
5
$ halt --poweroff

$ poweroff --poweroff

$ reboot --poweroff

Linux shutdown 命令

.. note::

青山依旧在,几度夕阳红。

  • 杨慎《临江仙·滚滚长江东逝水》

Linux shutdown 命令可以用来挂起、关机或者重启设备,执行成功的话会返回0。

官方定义为:

shutdown - Halt, power-off or reboot the machine

语法

使用方法如下:

1
$ shutdown [OPTIONS...] [TIME] [WALL...]

第一个参数可能是一个时间字符串 (通常是 now),一般而言,后面可以跟上一个提示消息来通知登陆的用户系统马上进行的操作。

时间字符串的一般为hh:mm,表示经过多长时间进行关机,当然比较常用的为+m,也就是m分钟后执行操作。

参数如下所示:

  • -H, --halt 挂起机器
  • -P, --poweroff 关机(默认选项)
  • -r, --reboot 重启机器
  • -h 等效于–poweroff,出发专门指定 –halt选项
  • -k不进行挂起、关机或者重启,仅仅发送通知信息
  • --no-wall : 挂起、关机或者重启前,不发送信息
  • -c 取消当前正在进行的关机动作,前提是参数不是now

立即关机

1
$ shutdown -h now

十分钟后关机

1
2
3
4
$ shutdown -h 10

# 增加提示信息
$ shutdown -h 10 "The system will shutdown in 10 minutes, save your work immediately"

17:30关机

1
2
3
4
$ shutdown -h 17:30

# 增加提示信息
$ shutdown -h 10 "The system will shutdown in 17:30 , remember to save your work"

重新启动计算机

1
$ shutdown -r now