0%

汇报磁盘空间的df

使用man来查看df,官方含义为:

report file system disk space usage

也就是查看文件系统的磁盘空间占用情况,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

选项

这个命令的使用也是中规中矩,df [options],其中一些比较有用的选项为:

  • -a, --all,这个用的不多,不过可以把所有的信息,包括无法访问的一一列出来
  • -B, --block-size=SIZE,以SIZE为单位显示,比如M/T分别按照MBTB来显示
  • --total:比较好用的是,提供了一个总的使用比例出来
  • -h, --human-readable:这个比较友好,也是最常用的一个选项
  • -H, --si:强迫症必备,如果非要认为1K是1000而不是1024.
  • -l, --local:对于目前网络挂载NFS等等必须的一个选项
  • -T, --print-type:打印文件系统的类型,比如xfs,比如zfs等等

不加任何参数的输出

如果不加任何选项,输出如下:

1
2
3
4
5
6
7
8
9
10
11
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 976083292 242281612 733801680 25% /
devtmpfs 16315508 0 16315508 0% /dev
tmpfs 16332416 18788 16313628 1% /dev/shm
tmpfs 16332416 1643588 14688828 11% /run
tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
/dev/sdb2 1038336 407812 630524 40% /boot
/dev/sda 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home 32210167688 29543283400 2666884288 92% /home
tmpfs 3266484 236 3266248 1% /run/user/1000

其实我比较想知道data目录到底是多大,哈哈

全而杂的-a选项

这个选项虽然可以输出所有的信息,但是有些真的不是一般人需要并且想要的。

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$ df -a
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs - - - - /
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 16315508 0 16315508 0% /dev
securityfs 0 0 0 - /sys/kernel/security
tmpfs 16332416 18788 16313628 1% /dev/shm
devpts 0 0 0 - /dev/pts
tmpfs 16332416 1643588 14688828 11% /run
tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
cgroup 0 0 0 - /sys/fs/cgroup/systemd
pstore 0 0 0 - /sys/fs/pstore
cgroup 0 0 0 - /sys/fs/cgroup/memory
cgroup 0 0 0 - /sys/fs/cgroup/pids
cgroup 0 0 0 - /sys/fs/cgroup/freezer
cgroup 0 0 0 - /sys/fs/cgroup/perf_event
cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio
cgroup 0 0 0 - /sys/fs/cgroup/blkio
cgroup 0 0 0 - /sys/fs/cgroup/cpuset
cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct
cgroup 0 0 0 - /sys/fs/cgroup/devices
cgroup 0 0 0 - /sys/fs/cgroup/hugetlb
configfs 0 0 0 - /sys/kernel/config
/dev/mapper/cl-root 976083292 242283596 733799696 25% /
selinuxfs 0 0 0 - /sys/fs/selinux
systemd-1 - - - - /proc/sys/fs/binfmt_misc
debugfs 0 0 0 - /sys/kernel/debug
mqueue 0 0 0 - /dev/mqueue
hugetlbfs 0 0 0 - /dev/hugepages
/dev/sdb2 1038336 407812 630524 40% /boot
/dev/sda 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home 32210167688 29543283400 2666884288 92% /home
sunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs
tmpfs 3266484 236 3266248 1% /run/user/1000
gvfsd-fuse 0 0 0 - /run/user/1000/gvfs
fusectl 0 0 0 - /sys/fs/fuse/connections
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc

根据TB来显示

如果知道硬盘的空间或存储在TB量级就可以用BT了,如果是PB量级的,恭喜你,可以用BP.

1
2
3
4
5
6
7
8
9
10
11
$ df -BT
Filesystem 1T-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 1T 1T 1T 25% /
devtmpfs 1T 0T 1T 0% /dev
tmpfs 1T 1T 1T 1% /dev/shm
tmpfs 1T 1T 1T 11% /run
tmpfs 1T 0T 1T 0% /sys/fs/cgroup
/dev/sdb2 1T 1T 1T 40% /boot
/dev/sda 88T 68T 20T 78% /data
/dev/mapper/cl-home 30T 28T 3T 92% /home
tmpfs 1T 1T 1T 1% /run/user/1000

我想知道整个系统一共用了多少

此时total发挥出绝佳的作用,在最后一行输出一个总占比

1
2
3
4
5
6
7
8
9
10
11
12
$ df --total
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 976083292 242283596 733799696 25% /
devtmpfs 16315508 0 16315508 0% /dev
tmpfs 16332416 18788 16313628 1% /dev/shm
tmpfs 16332416 1643588 14688828 11% /run
tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
/dev/sdb2 1038336 407812 630524 40% /boot
/dev/sda 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home 32210167688 29543283400 2666884288 92% /home
tmpfs 3266484 236 3266248 1% /run/user/1000

我在单独拉出来秀一秀 :total 127015350412 102675257464 24340092948 81% -

非目力所及,自动判断

这个是我用的很多的参数,应该也是最常用的,-h的含义前面也可以看到是human-read的意思,方便我们人类,会使用M、G这样的单位来区别

1
2
3
4
5
6
7
8
9
10
11
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 931G 232G 700G 25% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 19M 16G 1% /dev/shm
tmpfs 16G 1.6G 15G 11% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sdb2 1014M 399M 616M 40% /boot
/dev/sda 88T 68T 20T 78% /data
/dev/mapper/cl-home 30T 28T 2.5T 92% /home
tmpfs 3.2G 236K 3.2G 1% /run/user/1000

强迫症患者的福音

如果非得说1K是1000,而不是1024,那么这个选项比较合适秀一下。

1
2
3
4
5
6
7
8
9
10
11
$ df -H
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 1.0T 249G 752G 25% /
devtmpfs 17G 0 17G 0% /dev
tmpfs 17G 20M 17G 1% /dev/shm
tmpfs 17G 1.7G 16G 11% /run
tmpfs 17G 0 17G 0% /sys/fs/cgroup
/dev/sdb2 1.1G 418M 646M 40% /boot
/dev/sda 97T 75T 22T 78% /data
/dev/mapper/cl-home 33T 31T 2.8T 92% /home
tmpfs 3.4G 242k 3.4G 1% /run/user/1000

只显示本地信息

在网络发达的今天,各种挂载满天飞,NFS四处连接,如果不跟上l选项,估计已经分不清哪个是哪个了。

1
2
3
4
5
6
7
8
9
10
11
$ df -l
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 976083292 242283596 733799696 25% /
devtmpfs 16315508 0 16315508 0% /dev
tmpfs 16332416 18788 16313628 1% /dev/shm
tmpfs 16332416 1643588 14688828 11% /run
tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
/dev/sdb2 1038336 407812 630524 40% /boot
/dev/sda 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home 32210167688 29543283400 2666884288 92% /home
tmpfs 3266484 236 3266248 1% /run/user/1000

查看系统类型

系统类型有很多,可以通过-T选项来查找。

1
2
3
4
5
6
7
8
9
10
11
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root xfs 976083292 242283596 733799696 25% /
devtmpfs devtmpfs 16315508 0 16315508 0% /dev
tmpfs tmpfs 16332416 18788 16313628 1% /dev/shm
tmpfs tmpfs 16332416 1643588 14688828 11% /run
tmpfs tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
/dev/sdb2 xfs 1038336 407812 630524 40% /boot
/dev/sda xfs 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home xfs 32210167688 29543283400 2666884288 92% /home
tmpfs tmpfs 3266484 236 3266248 1% /run/user/1000

df - 查看硬盘大小

使用man来查看df,官方含义为:

report file system disk space usage

也就是查看文件系统的磁盘空间占用情况,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

选项

这个命令的使用也是中规中矩,df [options],其中一些比较有用的选项为:

  • -a, --all,这个用的不多,不过可以把所有的信息,包括无法访问的一一列出来
  • -B, --block-size=SIZE,以SIZE为单位显示,比如M/T分别按照MBTB来显示
  • --total:比较好用的是,提供了一个总的使用比例出来
  • -h, --human-readable:这个比较友好,也是最常用的一个选项
  • -H, --si:强迫症必备,如果非要认为1K是1000而不是1024.
  • -l, --local:对于目前网络挂载NFS等等必须的一个选项
  • -T, --print-type:打印文件系统的类型,比如xfs,比如zfs等等

不加任何参数的输出

如果不加任何选项,输出如下:

1
2
3
4
5
6
7
8
9
10
11
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 976083292 242281612 733801680 25% /
devtmpfs 16315508 0 16315508 0% /dev
tmpfs 16332416 18788 16313628 1% /dev/shm
tmpfs 16332416 1643588 14688828 11% /run
tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
/dev/sdb2 1038336 407812 630524 40% /boot
/dev/sda 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home 32210167688 29543283400 2666884288 92% /home
tmpfs 3266484 236 3266248 1% /run/user/1000

其实我比较想知道data目录到底是多大,哈哈

全而杂的-a选项

这个选项虽然可以输出所有的信息,但是有些真的不是一般人需要并且想要的。

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$ df -a
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs - - - - /
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 16315508 0 16315508 0% /dev
securityfs 0 0 0 - /sys/kernel/security
tmpfs 16332416 18788 16313628 1% /dev/shm
devpts 0 0 0 - /dev/pts
tmpfs 16332416 1643588 14688828 11% /run
tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
cgroup 0 0 0 - /sys/fs/cgroup/systemd
pstore 0 0 0 - /sys/fs/pstore
cgroup 0 0 0 - /sys/fs/cgroup/memory
cgroup 0 0 0 - /sys/fs/cgroup/pids
cgroup 0 0 0 - /sys/fs/cgroup/freezer
cgroup 0 0 0 - /sys/fs/cgroup/perf_event
cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio
cgroup 0 0 0 - /sys/fs/cgroup/blkio
cgroup 0 0 0 - /sys/fs/cgroup/cpuset
cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct
cgroup 0 0 0 - /sys/fs/cgroup/devices
cgroup 0 0 0 - /sys/fs/cgroup/hugetlb
configfs 0 0 0 - /sys/kernel/config
/dev/mapper/cl-root 976083292 242283596 733799696 25% /
selinuxfs 0 0 0 - /sys/fs/selinux
systemd-1 - - - - /proc/sys/fs/binfmt_misc
debugfs 0 0 0 - /sys/kernel/debug
mqueue 0 0 0 - /dev/mqueue
hugetlbfs 0 0 0 - /dev/hugepages
/dev/sdb2 1038336 407812 630524 40% /boot
/dev/sda 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home 32210167688 29543283400 2666884288 92% /home
sunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs
tmpfs 3266484 236 3266248 1% /run/user/1000
gvfsd-fuse 0 0 0 - /run/user/1000/gvfs
fusectl 0 0 0 - /sys/fs/fuse/connections
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc

根据TB来显示

如果知道硬盘的空间或存储在TB量级就可以用BT了,如果是PB量级的,恭喜你,可以用BP.

1
2
3
4
5
6
7
8
9
10
11
$ df -BT
Filesystem 1T-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 1T 1T 1T 25% /
devtmpfs 1T 0T 1T 0% /dev
tmpfs 1T 1T 1T 1% /dev/shm
tmpfs 1T 1T 1T 11% /run
tmpfs 1T 0T 1T 0% /sys/fs/cgroup
/dev/sdb2 1T 1T 1T 40% /boot
/dev/sda 88T 68T 20T 78% /data
/dev/mapper/cl-home 30T 28T 3T 92% /home
tmpfs 1T 1T 1T 1% /run/user/1000

我想知道整个系统一共用了多少

此时total发挥出绝佳的作用,在最后一行输出一个总占比

1
2
3
4
5
6
7
8
9
10
11
12
$ df --total
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 976083292 242283596 733799696 25% /
devtmpfs 16315508 0 16315508 0% /dev
tmpfs 16332416 18788 16313628 1% /dev/shm
tmpfs 16332416 1643588 14688828 11% /run
tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
/dev/sdb2 1038336 407812 630524 40% /boot
/dev/sda 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home 32210167688 29543283400 2666884288 92% /home
tmpfs 3266484 236 3266248 1% /run/user/1000

我在单独拉出来秀一秀 :total 127015350412 102675257464 24340092948 81% -

非目力所及,自动判断

这个是我用的很多的参数,应该也是最常用的,-h的含义前面也可以看到是human-read的意思,方便我们人类,会使用M、G这样的单位来区别

1
2
3
4
5
6
7
8
9
10
11
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 931G 232G 700G 25% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 19M 16G 1% /dev/shm
tmpfs 16G 1.6G 15G 11% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sdb2 1014M 399M 616M 40% /boot
/dev/sda 88T 68T 20T 78% /data
/dev/mapper/cl-home 30T 28T 2.5T 92% /home
tmpfs 3.2G 236K 3.2G 1% /run/user/1000

强迫症患者的福音

如果非得说1K是1000,而不是1024,那么这个选项比较合适秀一下。

1
2
3
4
5
6
7
8
9
10
11
$ df -H
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 1.0T 249G 752G 25% /
devtmpfs 17G 0 17G 0% /dev
tmpfs 17G 20M 17G 1% /dev/shm
tmpfs 17G 1.7G 16G 11% /run
tmpfs 17G 0 17G 0% /sys/fs/cgroup
/dev/sdb2 1.1G 418M 646M 40% /boot
/dev/sda 97T 75T 22T 78% /data
/dev/mapper/cl-home 33T 31T 2.8T 92% /home
tmpfs 3.4G 242k 3.4G 1% /run/user/1000

只显示本地信息

在网络发达的今天,各种挂载满天飞,NFS四处连接,如果不跟上l选项,估计已经分不清哪个是哪个了。

1
2
3
4
5
6
7
8
9
10
11
$ df -l
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 976083292 242283596 733799696 25% /
devtmpfs 16315508 0 16315508 0% /dev
tmpfs 16332416 18788 16313628 1% /dev/shm
tmpfs 16332416 1643588 14688828 11% /run
tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
/dev/sdb2 1038336 407812 630524 40% /boot
/dev/sda 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home 32210167688 29543283400 2666884288 92% /home
tmpfs 3266484 236 3266248 1% /run/user/1000

查看系统类型

系统类型有很多,可以通过-T选项来查找。

1
2
3
4
5
6
7
8
9
10
11
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root xfs 976083292 242283596 733799696 25% /
devtmpfs devtmpfs 16315508 0 16315508 0% /dev
tmpfs tmpfs 16332416 18788 16313628 1% /dev/shm
tmpfs tmpfs 16332416 1643588 14688828 11% /run
tmpfs tmpfs 16332416 0 16332416 0% /sys/fs/cgroup
/dev/sdb2 xfs 1038336 407812 630524 40% /boot
/dev/sda xfs 93759481856 72887620044 20871861812 78% /data
/dev/mapper/cl-home xfs 32210167688 29543283400 2666884288 92% /home
tmpfs tmpfs 3266484 236 3266248 1% /run/user/1000

malloc的使用

strlen求出的值没有计入串结尾的‘\ 0’字符,而strcpy却将复制它。所以这里分配的空间实际上是不够的,这将使strcpy的写入超过所分配空间的界限。习惯写法是:

1
2
p = malloc(strlen(buf) + 1);
strcpy(p, buf);

所以,如果没有+1,就要特别注意了。

函数宏

老的C语言程序员中有一种倾向,就是把很短的执行频繁的计算写成宏,而不是定义为函数。完成I / O的getchar,做字符测试的isdigit都是得到官方认可的例子。人们这样做最根本的理由就是执行效率:宏可以避免函数调用的开销。实际上,即使是在C语言刚诞生时(那时的机器非常慢,函数调用的开销也特别大),这个论据也是很脆弱的,到今天它就更无足轻重了。有了新型的机器和编译程序,函数宏的缺点就远远超过它能带来的好处。

所以应该避免函数宏。在C++ 里,在线函数更削减了函数宏的用武之地,在Java里根本就没有宏这种东西。即使是在C语言里,它们带来的麻烦也比解决的问题更多。

函数宏最常见的一个严重问题是:如果一个参数在定义中出现多次,它就可能被多次求值。如果调用时的实际参数带有副作用,结果就会产生一个难以捉摸的错误。

Linux shell 获取更改系统时间

date命令可以用来打印显示亦或者更改日期和时间。

看看官方的定义如下:

date - print or set the system date and time

用法如下:

1
2
$ date [OPTION]... [+FORMAT]
$ date [-u | --utc| --universal] [MMDDhhmm[[CC]YY][.ss]]

较常用的OPTION为:

  • -R : 显示时区
  • -u, --utc, --universal:打印或者设置世界协调时
  • -d, --date=STRING:显示STRING的时间

默认输入

date 命令默认情况下为CST时区,

1
2
$ date
Mon Jun 5 15:11:44 CST 2014

显示时区

如果加上 -R参数就可以带上时区,比如我们的东八区

1
2
$ date -R
Mon, 05 Jun 2014 15:15:25 +0800

世界协调时

选项-u, --utc, --universal可以显示世界协调时

1
2
3
4
5
6
7
8
$ date -u
Mon Jun 5 07:15:46 UTC 2014

$ date --utc
Mon Jun 5 07:15:48 UTC 2014

$ date --universal
Mon Jun 5 07:15:55 UTC 2014

格式化日期

可以通过不同的参数来格式化日期,这里需要注意的是:不同的大小写代表的是不同的含义

比较常用的日期和时间如下:

1
2
3
4
5
6
7
8
# 显示年月日时分秒
$ date +%Y-%m-%dT%H:%M:%S
2013-01-17T18:01:08

# 或者 下面一样的效果

$ data +%FT%T
2013-01-17T18:02:12

这里注意到有+这个选项,后面的就是格式字符串,常见常用的有下面几个。

格式化参数 含义
%a 星期的缩写,比如Sun
%A 星期的全称,比如Sunday
%b 月份的缩写,比如Jan
%B 月份的全称,比如January
%c 日期和时间,比如Thu Mar 3 23:05:25 2005
%d 日期,比如02
%D 日期,格式为月/日/年,比如:01/17/13,即为2013年1月17日
%F 日期的全写,格式为年-月-日,比如2013-01-17
%H 小时,从00到23,24小时制
%I 小时,从01到12,12小时制
%j 一年中的第几天,从001到366
%m 月份,比如:01
%M 分钟,比如56
%N 纳秒,范围为:(000000000..999999999)
%p 使用AM或PM
%P 使用am或pm
%q 显示季度(范围1到4)
%r 12进制显示,比如:10:23:51 PM
%R 24进制显示时分,类似于%H:%M
%s 自UTC1970-01-01 00:00:00以来的秒数
%S 秒,比如28
%T 显示时间,格式为:%H:%M:%S
%u 一周的第几天,从1到7
%U 一年的第几周,周日为第一天,范围00到53
%V 与%U类似,使用Monday作为第一天,范围01到53
%w 星期,如果结果显示0,则表示周日
%W 一年的第几周,周一为第一天,范围00到53
%x 本地日期,格式mm/dd/yy
%X 本地时间,格式hh:mm:ss
%Y 以四位数字格式打印年份 ,比如 2014
%y 以二位数字格式打印年份 ,比如14
%z 数字时区,格式为+hhmm
%Z 字母时区,比如EDT、CST

还有一些可选的参数,比如:^,使用方法为date +%^b,此时的输出改为大写,如果date +%b输出为Jan,那么加上^的输出为JAN

转换秒到日期时间

下面的方法为将UTC 1970-01-01 00:00:00经过123456789秒以后的日期时间显示出来。

1
2
$ date --date='@123456789'
Fri Nov 30 05:33:09 CST 1973

–date选项花样多

-d, --date=STRING能描述和使用的STRING很多很复杂,比如可以这么用:

1
2
3
4
5
6
7
8
9
$ date --date="next Week"

$ date --date="next Month"

$ date --date="1 year ago"

$ date --date="4 days"

$ date --date="4 days ago"

还有很多其他的用法,可以参考info date

炫技汇总实例

下面这个命令基本就能得到所有的信息了

1
2
3
$ date +%Y年%m月%d日%H时%M分%S秒第%j日%q季度第%U周周%A时区%Z

2014年05月06日13时13分14秒第126日2季度第18周周Tuesday时区CST

一日难再晨及时当勉励 date

.. note::

时光只解催人老,不信多情,长恨离亭,泪滴春衫酒易醒。
- 晏殊《采桑子·时光只解催人老》

date命令可以用来打印显示亦或者更改日期和时间。

看看官方的定义如下:

date - print or set the system date and time

用法如下:

1
2
$ date [OPTION]... [+FORMAT]
$ date [-u | --utc| --universal] [MMDDhhmm[[CC]YY][.ss]]

较常用的OPTION为:

  • -R : 显示时区
  • -u, --utc, --universal:打印或者设置世界协调时
  • -d, --date=STRING:显示STRING的时间

默认输入

date 命令默认情况下为CST时区,

1
2
$ date
Mon Jun 5 15:11:44 CST 2014

显示时区

如果加上 -R参数就可以带上时区,比如我们的东八区

1
2
$ date -R
Mon, 05 Jun 2014 15:15:25 +0800

世界协调时

选项-u, --utc, --universal可以显示世界协调时

1
2
3
4
5
6
7
8
$ date -u
Mon Jun 5 07:15:46 UTC 2014

$ date --utc
Mon Jun 5 07:15:48 UTC 2014

$ date --universal
Mon Jun 5 07:15:55 UTC 2014

格式化日期

可以通过不同的参数来格式化日期,这里需要注意的是:不同的大小写代表的是不同的含义

比较常用的日期和时间如下:

1
2
3
4
5
6
7
8
# 显示年月日时分秒
$ date +%Y-%m-%dT%H:%M:%S
2013-01-17T18:01:08

# 或者 下面一样的效果

$ data +%FT%T
2013-01-17T18:02:12

实例

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
26
27
28
29
30
31
32
33
$ date 

Thu Jan 1 08:19:23 PST 2009

$ date --date="now"

Thu Jan 1 08:20:05 PST 2009

$ date --date="today"

Thu Jan 1 08:20:12 PST 2009

$ date --date='1970-01-01 00:00:01 UTC +5 hours' +%s

18001

$ date '+Current Date: %m/%d/%y%nCurrent Time:%H:%M:%S'

Current Date: 01/01/09

Current Time:08:21:41

$ date +"%d-%m-%Y"

01-01-2009

$ date +"%d/%m/%Y"

01/01/2009

$ date +"%A,%B %d %Y"

Thursday,January 01 2009

以下是date命令的不同的格式选项,各选项所代表含义如下:

  • %D 日期(月/日/年)

  • %d 一个月中的第几天 (01..31)

  • %m 月份 (01..12)

  • %y 年份的后两位 (00..99)

  • %a 当前语言下星期的缩写 (Sun..Sat)

  • %A 当前语言下星期的全拼 (Sunday..Saturday)

  • %b 当前语言下月份的缩写 (Jan..Dec)

  • %B 当前语言下的月份的全称 (January..December)

  • %H 24小时制小时 (00..23)

  • %I 12小时制小时 (01..12)

  • %Y 年份(1970…)

显示过去的日期和时间

1
2
3
4
5
6
7
8
9
10
11
$date --date=”3 seconds ago”

$date --date=”1 day ago”

$date --date=”2 year ago”

$date --date=”3 seconds ago”

$date --date=”yesterday”

$date --date=”10 months 2 day ago”

显示未来的日期和时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$date --date=”3 seconds”

$date --date=”1 day”

$date --date=”1 week”

$date --date=”2 year”

$date --date=”3 seconds”

$date --date=”tomorrow”

$date --date=”next day”

$date --date=”10 months 2 day”

$date --date=”this Wednesday”

Linux shell获取系统时间

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
echo "time now is:"
read hours
if [ $hours -lt 12 ]
then
echo "good morning"
elif [ $hours -ge 12 ] && [ $hours -lt 20 ]
then
echo "good afternoon"
else
echo "good night"
fi

调用系统时后:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
echo "time now is:"
echo `date`
#read hours
hours=`date +%H`
echo "Hours : $hours"
if [ $hours -lt 12 ]
then
echo "good morning"
elif [ $hours -ge 12 ] && [ $hours -lt 20 ]
then
echo "good afternoon"
else
echo "good night"
fi

这里注意的地方是 等号两边不要空格

获取系统时间之当前小时的语句是

1
hours=`date +%H`

如果想系统时间按格式显示,则可改为

1
echo `date +"%Y-%m-%d-%H:%M:%S"`

运行结果为:

1
2013-01-17-18:01:08

这里需要注意的是:不同的大小写代表的是不同的含义

1
2
3
4
5
6
7
8
date +%Y 以四位数字格式打印年份 eg: 2018
date +%y 以二位数字格式打印年份 eg: 18
date +%m 月份
date +%d 日期
date +%H 小时
date +%M 分钟
date +%S 秒
date +%w 星期,如果结果显示0,则表示周日

Linux fdisk 命令

Fdisk is the most commonly used command to check the partitions on a disk. The fdisk command can display the partitions and details like file system type. However it does not report the size of each partitions.

1
$ fdisk -l #显示所有的分区表

fedora17升级到18

fedora 18的升级工具不再是pre-upgrade了,而是换成了fedup。

先安装fedup,使用fedup升级的方法:

1
sudo fedup –network 18

IF you can not find the network configure.

May be you should TYPE:

1
system-config-network

to setting IP info.