Web与技术 · 2018年09月3号 0

Linux系统上的命令使用方法

许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置。

格式:

ifconfig [网络设备] [参数]

功能:

ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。

参数:

up 启动指定网络设备/网卡。

down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。

arp 设置指定网卡是否支持ARP协议。

-promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包

-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包

-a 显示全部接口信息

-s 显示摘要信息(类似于 netstat -i)

add 给指定网卡配置IPv6地址

del 删除指定网卡的IPv6地址

<硬件地址> 配置网卡最大的传输单元

mtu<字节数> 设置网卡的最大传输单元 (bytes)

netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。

tunel 建立隧道

dstaddr 设定一个远端地址,建立点对点通信

-broadcast<地址> 为指定网卡设置广播协议

-pointtopoint<地址> 为网卡设置点对点通讯协议

multicast 为网卡设置组播标志

address 为网卡设置IPv4地址

txqueuelen<长度> 为网卡设置传输列队的长度

4.使用实例:

实例1:显示网络设备信息(激活状态的)

命令:

ifconfig

输出:

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:56:BF:26:20
inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0
TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:596390239 (568.7 MiB)  TX bytes:2886956 (2.7 MiB)

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:68 errors:0 dropped:0 overruns:0 frame:0
TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2856 (2.7 KiB)  TX bytes:2856 (2.7 KiB)

echo:
语 法:echo [-ne][字符串]或 echo [–help][–version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号。
参 数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息
每一个shell支持的echo指令可能都不太相同。
-n 不输出最后的\n
-e解释转义字符
-E不解释转义字符
示例:echo “i am a boy” // 执行后会打印 i am a boy   i am a boy

tty:
[功能]

打印连接到标准输入的终端的文件名。

 

[描述]

命令项:

-s, –silent, –quiet: 什么也不打印,只是返回退出状态码。

–help: 打印帮助信息。

–version: 打印版本信息并退出。

 

返回的状态码:

0 表示标准输入是一个终端。

1 表示标准输入不是一个终端。

2 表示给定的参数是不正确的参数。

3 表示发生了写错误。

 

[举例]

*查看当前的标准终端文件描述符号:

[quietheart@lv-k etc]$ tty

/dev/pts/6

这里,输入tty之后,输出”/dev/pts/6″就是当前连接的终端对应的文件描述符号,我们可以通过向这个文件,这样会看到当前终端会输出我们写入的数据,例如:

[quietheart@lv-k etc]$ echo “mytest” >/dev/pts/6

mytest

可见,向/dev/pts/6文件写入的内容,直接显示到我们的终端上面了。如果我在机器上面开了多个终端,然后我在别的终端中输入上面的echo命令,那么将会看到对应”/dev/pts/6″的终端上面会显示相应的字符了。

*运行tty什么也不输出,然后查看其退出码:
[quietheart@lv-k etc]$ tty -s
[quietheart@lv-k etc]$ echo $?
0
这里,使用shell的命令”echo $?”来显示上一条命令的退出状态码。状态码的含义如下:
0 表示标准输入是一个终端。
1 表示标准输入不是一个终端。
2 表示给定的参数是不正确的参数。
3 表示发生了写错误。

[其它]

*基本概念:

1,tty(终端设备的统称):

tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

2,pty(虚拟终端):

如果我们远程telnet到主机或使用xterm时,也需要一个终端交互,这就是虚拟终端pty(pseudo-tty)

3,pts/ptmx(pts/ptmx结合使用,进而实现pty):

pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。

startx:
startx命令用来启动X Window,实际上启动X Window的程序为xinit
语法

startx(参数)参数

客户端及选项:X客户端及选项;
服务器及选项:X服务器及选项。
实例:

要在工作站上或 X 终端上启动 X 会话,请输入:
startx要在工作站上强制启动 X 会话,请输入:
startx -w要为 X 终端启动 X 会话,并注销用户的 telnet 会话,请输入:

startx; kill -9 $$要使用 .xinitrc 脚本启动 X 会话,请输入:
startx -x .xinitrc要使用 mwm 窗口管理器启动 X 会话,请输入:
startx -m mwm

export:
Linux export命令用于设置或显示环境变量。

在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登陆操作。

语法
export [-fnp][变量名称]=[变量设置值]参数说明:

-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。
实例
列出当前所有的环境变量

export -p //列出当前的环境变量值

declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=“| /usr/bin/lesspipe %s“
declare -x LOGNAME=“root“
declare -x LS_COLORS=““
declare -x MAIL=“/var/mail/root“
declare -x OLDPWD
declare -x PATH=“/opt/toolchains/arm920t-eabi/bin:/opt/toolchains/arm920t-eabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“
declare -x PWD=“/root“
declare -x SHELL=“/bin/bash“
declare -x SHLVL=“1“
declare -x SPEECHD_PORT=“6560“
declare -x SSH_CLIENT=“192.168.1.65 1674 22“
declare -x SSH_CONNECTION=“192.168.1.65 1674 192.168.1.3 22“
declare -x SSH_TTY=“/dev/pts/2“
declare -x TERM=“XTERM“
declare -x USER=“root“
declare -x XDG_SESSION_COOKIE=“93b5d3d03e032c0cf892a4474bebda9f-1273864738.954257-340206484“

定义环境变量

export MYENV //定义环境变量

export -p //列出当前的环境变量

declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=“| /usr/bin/lesspipe %s“
declare -x LOGNAME=“root“
declare -x LS_COLORS=““
declare -x MAIL=“/var/mail/root“
declare -x MYENV
declare -x OLDPWD
declare -x PATH=“/opt/toolchains/arm920t-eabi/bin:/opt/toolchains/arm920t-eabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“
declare -x PWD=“/root“
declare -x SHELL=“/bin/bash“
declare -x SHLVL=“1“
declare -x SPEECHD_PORT=“6560“
declare -x SSH_CLIENT=“192.168.1.65 1674 22“
declare -x SSH_CONNECTION=“192.168.1.65 1674 192.168.1.3 22“
declare -x SSH_TTY=“/dev/pts/2“
declare -x TERM=“XTERM“
declare -x USER=“root“
declare -x XDG_SESSION_COOKIE=“93b5d3d03e032c0cf892a4474bebda9f-1273864738.954257-340206484“定义环境变量赋值

export MYENV=7 //定义环境变量并赋值

export -p

declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=“| /usr/bin/lesspipe %s“
declare -x LOGNAME=“root“
declare -x LS_COLORS=““
declare -x MAIL=“/var/mail/root“
declare -x MYENV=“7“
declare -x OLDPWD
declare -x PATH=“/opt/toolchains/arm920t-eabi/bin:/opt/toolchains/arm920t-eabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“
declare -x PWD=“/root“
declare -x SHELL=“/bin/bash“
declare -x SHLVL=“1“
declare -x SPEECHD_PORT=“6560“
declare -x SSH_CLIENT=“192.168.1.65 1674 22“
declare -x SSH_CONNECTION=“192.168.1.65 1674 192.168.1.3 22“
declare -x SSH_TTY=“/dev/pts/2“
declare -x TERM=“XTERM“
declare -x USER=“root“
declare -x XDG_SESSION_COOKIE=“93b5d3d03e032c0cf892a4474bebda9f-1273864738.954257-340206484“

pwd:
Linux中用 pwd 命令来查看”当前工作目录“的完整路径。简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。
在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。

1.命令格式:

pwd [选项]

2.命令功能:

查看”当前工作目录“的完整路径

3.常用参数:
一般情况下不带任何参数
如果目录是链接时:
格式:pwd -P  显示出实际路径,而非使用连接(link)路径。
4.常用实例:

实例1:用 pwd 命令查看默认工作目录的完整路径

命令:
pwd
输出:
[root@localhost ~]# pwd
/root
[root@localhost ~]#

实例2:使用 pwd 命令查看指定文件夹
命令:
pwd
输出:
[root@localhost ~]# cd /opt/soft/
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]#

实例三:目录连接链接时,pwd -P  显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径

命令:
pwd -P
输出:
[root@localhost soft]# cd /etc/init.d
[root@localhost init.d]# pwd
/etc/init.d
[root@localhost init.d]# pwd -P
/etc/rc.d/init.d
[root@localhost init.d]#

history:
如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的15个用法。

  1. 使用 HISTTIMEFORMAT 显示时间戳

当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:

export HISTTIMEFORMAT=’%F %T ‘

history | more

1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release

  1. 使用 Ctrl+R 搜索历史

Ctrl+R 是我经常使用的一个快捷键。此快捷键让你对命令历史进行搜索,对于想要重复执行某个命令的时候非常有用。当找到命令后,通常再按回车键就可以执行该命令。如果想对找到的命令进行调整后再执行,则可以按一下左或右方向键。

[Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt]

(reverse-i-search)`red‘: cat /etc/redhat-release
[Note: Press enter when you see your command, which will execute the command from the history]

cat /etc/redhat-release

Fedora release 9 (Sulphur)

  1. 快速重复执行上一条命令

有 4 种方法可以重复执行上一条命令:
1. 使用上方向键,并回车执行。
2. 按 !! 并回车执行。
3. 输入 !-1 并回车执行。
4. 按 Ctrl+P 并回车执行。

  1. 从命令历史中执行一个指定的命令

在下面的例子中,如果你想重复执行第 4 条命令,那么可以执行 !4:

history | more

1 service network restart
2 exit
3 id
4 cat /etc/redhat-release

!4

cat /etc/redhat-release
Fedora release 9 (Sulphur)

  1. 通过指定关键字来执行以前的命令

在下面的例子,输入 !ps 并回车,将执行以 ps 打头的命令:

!ps

ps aux | grep yp
root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind
root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp

  1. 使用 HISTSIZE 控制历史命令记录的总行数

将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450 条:

vi ~/.bash_profile

HISTSIZE=450
HISTFILESIZE=450

  1. 使用 HISTFILE 更改历史文件名称

默认情况下,命令历史存储在 ~/.bash_history 文件中。

下载该文件可以去root目录下,用sz命令

#sz .bash_history

添加下列内容到 .bash_profile 文件并重新登录 bash shell,将使用 .commandline_warrior 来存储命令历史:

vi ~/.bash_profile

HISTFILE=/root/.commandline_warrior

  1. 使用 HISTCONTROL 从命令历史中剔除连续重复的条目

在下面的例子中,pwd 命令被连续执行了三次。执行 history 后你会看到三条重复的条目。要剔除这些重复的条目,你可以将 HISTCONTROL 设置为 ignoredups:

pwd

pwd

pwd

history | tail -4

44 pwd
45 pwd
46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above]
47 history | tail -4

export HISTCONTROL=ignoredups

pwd

pwd

pwd

history | tail -3

56 export HISTCONTROL=ignoredups
57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above]
58 history | tail -4

  1. 使用 HISTCONTROL 清除整个命令历史中的重复条目

上例中的 ignoredups 只能剔除连续的重复条目。要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成 erasedups:

export HISTCONTROL=erasedups

pwd

service httpd stop

history | tail -3

38 pwd
39 service httpd stop
40 history | tail -3

ls -ltr

service httpd stop

history | tail -6

35 export HISTCONTROL=erasedups
36 pwd
37 history | tail -3
38 ls -ltr
39 service httpd stop
[Note that the previous service httpd stop after pwd got erased]
40 history | tail -6

  1. 使用 HISTCONTROL 强制 history 不记住特定的命令

将 HISTCONTROL 设置为 ignorespace,并在不想被记住的命令前面输入一个空格:

export HISTCONTROL=ignorespace # ls -ltr # pwd # service httpd stop [Note that there is a

space at the beginning of service, to ignore this command from history] # history | tail -3 67 ls
-ltr 68 pwd 69 history | tail -3

  1. 使用 -c 选项清除所有的命令历史

如果你想清除所有的命令历史,可以执行:

history -c

  1. 命令替换

在下面的例子里,!!:$ 将为当前的命令获得上一条命令的参数:

ls anaconda-ks.cfg

anaconda-ks.cfg

vi !!:$

vi anaconda-ks.cfg

下例中,!^ 从上一条命令获得第一项参数:

cp anaconda-ks.cfg anaconda-ks.cfg.bak

anaconda-ks.cfg

vi -5 !^

vi anaconda-ks.cfg

  1. 为特定的命令替换指定的参数

在下面的例子,!cp:2 从命令历史中搜索以 cp 开头的命令,并获取它的第二项参数:

cp ~/longname.txt /really/a/very/long/path/long-filename.txt

ls -l !cp:2

ls -l /really/a/very/long/path/long-filename.txt

下例里,!cp:$ 获取 cp 命令的最后一项参数:

ls -l !cp:$

ls -l /really/a/very/long/path/long-filename.txt

  1. 使用 HISTSIZE 禁用 history

如果你想禁用 history,可以将 HISTSIZE 设置为 0:

export HISTSIZE=0

history

[Note that history did not display anything]

  1. 使用 HISTIGNORE 忽略历史中的特定命令

下面的例子,将忽略 pwd、ls、ls -ltr 等命令:

export HISTIGNORE=”pwd:ls:ls -ltr:”

pwd

ls

ls -ltr

service httpd stop

history | tail -3

79 export HISTIGNORE=”pwd:ls:ls -ltr:”
80 service httpd stop
81 history
[Note that history did not record pwd, ls and ls -ltr]

shutdown:
如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的15个用法。

  1. 使用 HISTTIMEFORMAT 显示时间戳

当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:

export HISTTIMEFORMAT=’%F %T ‘

history | more

1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release

  1. 使用 Ctrl+R 搜索历史

Ctrl+R 是我经常使用的一个快捷键。此快捷键让你对命令历史进行搜索,对于想要重复执行某个命令的时候非常有用。当找到命令后,通常再按回车键就可以执行该命令。如果想对找到的命令进行调整后再执行,则可以按一下左或右方向键。

[Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt]

(reverse-i-search)`red‘: cat /etc/redhat-release
[Note: Press enter when you see your command, which will execute the command from the history]

cat /etc/redhat-release

Fedora release 9 (Sulphur)

  1. 快速重复执行上一条命令

有 4 种方法可以重复执行上一条命令:
1. 使用上方向键,并回车执行。
2. 按 !! 并回车执行。
3. 输入 !-1 并回车执行。
4. 按 Ctrl+P 并回车执行。

  1. 从命令历史中执行一个指定的命令

在下面的例子中,如果你想重复执行第 4 条命令,那么可以执行 !4:

history | more

1 service network restart
2 exit
3 id
4 cat /etc/redhat-release

!4

cat /etc/redhat-release
Fedora release 9 (Sulphur)

  1. 通过指定关键字来执行以前的命令

在下面的例子,输入 !ps 并回车,将执行以 ps 打头的命令:

!ps

ps aux | grep yp
root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind
root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp

  1. 使用 HISTSIZE 控制历史命令记录的总行数

将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450 条:

vi ~/.bash_profile

HISTSIZE=450
HISTFILESIZE=450

  1. 使用 HISTFILE 更改历史文件名称

默认情况下,命令历史存储在 ~/.bash_history 文件中。

下载该文件可以去root目录下,用sz命令

#sz .bash_history

添加下列内容到 .bash_profile 文件并重新登录 bash shell,将使用 .commandline_warrior 来存储命令历史:

vi ~/.bash_profile

HISTFILE=/root/.commandline_warrior

  1. 使用 HISTCONTROL 从命令历史中剔除连续重复的条目

在下面的例子中,pwd 命令被连续执行了三次。执行 history 后你会看到三条重复的条目。要剔除这些重复的条目,你可以将 HISTCONTROL 设置为 ignoredups:

pwd

pwd

pwd

history | tail -4

44 pwd
45 pwd
46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above]
47 history | tail -4

export HISTCONTROL=ignoredups

pwd

pwd

pwd

history | tail -3

56 export HISTCONTROL=ignoredups
57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above]
58 history | tail -4

  1. 使用 HISTCONTROL 清除整个命令历史中的重复条目

上例中的 ignoredups 只能剔除连续的重复条目。要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成 erasedups:

export HISTCONTROL=erasedups

pwd

service httpd stop

history | tail -3

38 pwd
39 service httpd stop
40 history | tail -3

ls -ltr

service httpd stop

history | tail -6

35 export HISTCONTROL=erasedups
36 pwd
37 history | tail -3
38 ls -ltr
39 service httpd stop
[Note that the previous service httpd stop after pwd got erased]
40 history | tail -6

  1. 使用 HISTCONTROL 强制 history 不记住特定的命令

将 HISTCONTROL 设置为 ignorespace,并在不想被记住的命令前面输入一个空格:

export HISTCONTROL=ignorespace # ls -ltr # pwd # service httpd stop [Note that there is a

space at the beginning of service, to ignore this command from history] # history | tail -3 67 ls
-ltr 68 pwd 69 history | tail -3

  1. 使用 -c 选项清除所有的命令历史

如果你想清除所有的命令历史,可以执行:

history -c

  1. 命令替换

在下面的例子里,!!:$ 将为当前的命令获得上一条命令的参数:

ls anaconda-ks.cfg

anaconda-ks.cfg

vi !!:$

vi anaconda-ks.cfg

下例中,!^ 从上一条命令获得第一项参数:

cp anaconda-ks.cfg anaconda-ks.cfg.bak

anaconda-ks.cfg

vi -5 !^

vi anaconda-ks.cfg

  1. 为特定的命令替换指定的参数

在下面的例子,!cp:2 从命令历史中搜索以 cp 开头的命令,并获取它的第二项参数:

cp ~/longname.txt /really/a/very/long/path/long-filename.txt

ls -l !cp:2

ls -l /really/a/very/long/path/long-filename.txt

下例里,!cp:$ 获取 cp 命令的最后一项参数:

ls -l !cp:$

ls -l /really/a/very/long/path/long-filename.txt

  1. 使用 HISTSIZE 禁用 history

如果你想禁用 history,可以将 HISTSIZE 设置为 0:

export HISTSIZE=0

history

[Note that history did not display anything]

  1. 使用 HISTIGNORE 忽略历史中的特定命令

下面的例子,将忽略 pwd、ls、ls -ltr 等命令:

export HISTIGNORE=”pwd:ls:ls -ltr:”

pwd

ls

ls -ltr

service httpd stop

history | tail -3

79 export HISTIGNORE=”pwd:ls:ls -ltr:”
80 service httpd stop
81 history
[Note that history did not record pwd, ls and ls -ltr]

poweroff:
poweroff命令用来关闭计算机操作系统并且切断系统电源。

语法

poweroff(选项)选项

-n:关闭操作系统时不执行sync操作;
-w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;
-d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;
-f:强制关闭操作系统;
-i:关闭操作系统之前关闭所有的网络接口;
-h:关闭操作系统之前将系统中所有的硬件设置为备用模式。实例

如果确认系统中已经没有用户存在且所有数据都已保存,需要立即关闭系统,可以使用poweroff命令。

使用poweroff立即关闭系统:

poweroff

reboot:
【语法】reboot[选项]
【详解】reboot指令用于重启该计算机。它的作用和shutdown -r now是一样的。

选项 相应功能
-n 重启前保留当前数据。
-f 强制重启计算机。
-w 模拟重启,并将数据写入到“/var/log/wtmp”日志文件中。
-d 重启,但不写入日志。
-i 重启计算机前关闭网络。

例子:
直接重启启动计算机:

直接在SSH中输入以下指令即可
reboot
执行成功后系统会提示The system is going down for reboot NOW!

 

hwclock:
功能说明:显示与设定硬件时钟。

语  法:hwclock [–adjust][–debug][–directisa][–hctosys][–show][–systohc][–test]
[–utc][–version][–set –date=<日期与时间>]

补充说明:在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。

参  数:
–adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用–adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。
–debug  显示hwclock执行时详细的信息。
–directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。
–hctosys  将系统时钟调整为与目前的硬件时钟一致。
–set –date=<日期与时间>  设定硬件时钟。
–show  显示硬件时钟的时间与日期。
–systohc  将硬件时钟调整为与目前的系统时钟一致。
–test  仅测试程序,而不会实际更改硬件时钟。
–utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。
–version  显示版本信息。

使用示例
hwclock命令与clock命令是一个东西
[[email protected]~]# type -a hwclock
hwclock is /sbin/hwclock
hwclock is /usr/sbin/hwclock
[[email protected]~]# ls -l /sbin/hwclock /usr/sbin/hwclock
-rwxr-xr-x 1 root root 34096 2010-01-07 /sbin/hwclock
lrwxrwxrwx 1 root root    18 08-13 00:14 /usr/sbin/hwclock -> ../../sbin/hwclock

[[email protected]~]# type -a clock
clock is /sbin/clock
[[email protected]~]# ls -l /sbin/clock
lrwxrwxrwx 1 root root 7 08-13 00:14 /sbin/clock -> hwclock
[[email protected]~]#

 

date:
date命令是显示或设置系统时间与日期。

很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

语法
date(选项)(参数)选项

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
–help:在线帮助;
–version:显示版本信息。参数

<+时间日期格式>:指定显示时使用的日期时间格式。

日期格式字符串列表

%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)实例

格式化输出:

date +”%Y-%m-%d”
2009-12-07输出昨天日期:

date -d “1 day ago” +”%Y-%m-%d”
2012-11-192秒后输出:

date -d “2 second” +”%Y-%m-%d %H:%M.%S”
2012-11-20 14:21.31传说中的 1234567890 秒:

date -d “1970-01-01 1234567890 seconds” +”%Y-%m-%d %H:%m:%S”
2009-02-13 23:02:30普通转格式:

date -d “2009-12-12″ +”%Y/%m/%d %H:%M.%S”
2009/12/12 00:00.00apache格式转换:

date -d “Dec 5, 2009 12:00:37 AM” +”%Y-%m-%d %H:%M.%S”
2009-12-05 00:00.37格式转换后时间游走:

date -d “Dec 5, 2009 12:00:37 AM 2 year ago” +”%Y-%m-%d %H:%M.%S”
2007-12-05 00:00.37加减操作:

date +%Y%m%d                   //显示前天年月日
date -d “+1 day” +%Y%m%d       //显示前一天的日期
date -d “-1 day” +%Y%m%d       //显示后一天的日期
date -d “-1 month” +%Y%m%d     //显示上一月的日期
date -d “+1 month” +%Y%m%d     //显示下一月的日期
date -d “-1 year” +%Y%m%d      //显示前一年的日期
date -d “+1 year” +%Y%m%d      //显示下一年的日期设定时间:

date -s                        //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523               //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01               //设置具体时间,不会对日期做更改
date -s “01:01:01 2012-05-23”  //这样可以设置全部时间
date -s “01:01:01 20120523”    //这样可以设置全部时间
date -s “2012-05-23 01:01:01”  //这样可以设置全部时间
date -s “20120523 01:01:01”    //这样可以设置全部时间有时需要检查一组命令花费的时间,举例:

#!/bin/bash

start=$(date +%s)
nmap man.linuxde.net &> /dev/null

end=$(date +%s)
difference=$(( end – start ))
echo $difference seconds.