From d6c3e6d50cbdf1212d319052b5533de8dfbddae9 Mon Sep 17 00:00:00 2001 From: Zhang Peng Date: Wed, 26 Sep 2018 20:34:47 +0800 Subject: [PATCH] :memo: Writing docs. --- docs/linux/README.md | 11 +- docs/linux/commands/Linux性能管理命令.md | 165 +++++ docs/linux/commands/Linux用户管理命令.md | 193 +++++ docs/linux/commands/Linux系统管理命令.md | 190 +++++ docs/linux/commands/系统管理/README.md | 7 - .../commands/系统管理/用户和工作组管理.md | 677 ------------------ docs/linux/commands/系统管理/系统性能管理.md | 548 -------------- docs/linux/commands/系统管理/系统操作.md | 168 ----- docs/linux/commands/系统管理/系统设置.md | 332 --------- .../commands/{系统管理 => }/进程和作业管理.md | 36 +- 10 files changed, 559 insertions(+), 1768 deletions(-) create mode 100644 docs/linux/commands/Linux性能管理命令.md create mode 100644 docs/linux/commands/Linux用户管理命令.md create mode 100644 docs/linux/commands/Linux系统管理命令.md delete mode 100644 docs/linux/commands/系统管理/README.md delete mode 100644 docs/linux/commands/系统管理/用户和工作组管理.md delete mode 100644 docs/linux/commands/系统管理/系统性能管理.md delete mode 100644 docs/linux/commands/系统管理/系统操作.md delete mode 100644 docs/linux/commands/系统管理/系统设置.md rename docs/linux/commands/{系统管理 => }/进程和作业管理.md (92%) diff --git a/docs/linux/README.md b/docs/linux/README.md index de6cffd..3b9a746 100644 --- a/docs/linux/README.md +++ b/docs/linux/README.md @@ -16,12 +16,10 @@ - [linux 常用命令-文件权限属性设置](commands/文件目录管理/文件权限属性设置.md) - [linux 常用命令-文件查找和比较](commands/文件目录管理/文件查找和比较.md) - [linux 常用命令-目录基本操作](commands/文件目录管理/目录基本操作.md) - - [linux 常用命令-系统管理](commands/系统管理/README.md) - - [linux 常用命令-系统操作](commands/系统管理/系统操作.md) - - [linux 常用命令-系统设置](commands/系统管理/系统设置.md) - - [linux 常用命令-用户和工作组管理](commands/系统管理/用户和工作组管理.md) - - [linux 常用命令-进程和作业管理](commands/系统管理/进程和作业管理.md) - - [linux 常用命令-系统性能管理](commands/系统管理/系统性能管理.md) + - [Linux 用户管理命令](commands/Linux用户管理命令.md) - 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` + - [Linux 系统管理命令](commands/Linux系统管理命令.md) - 关键词:`reboot`, `exit`, `shutdown`, `date`, `mount`, `umount` + - [Linux 性能管理命令](commands/Linux性能管理命令.md) - 关键词:`df`, `du`, `top`, `free`, `iotop` + - [linux 常用命令-进程和作业管理](commands/进程和作业管理.md) - [Linux 网络应用命令](commands/Linux网络应用命令.md) - 关键词:`curl`, `wget`, `telnet`, `ip`, `hostname`, `ifconfig`, `route`, `ssh`, `ssh-keygen`, `iptables` - [Linux 网络测试命令](commands/Linux网络测试命令.md) - 关键词:`host`, `nslookup`, `nc`/`netcat`, `dig`, `ping`, `traceroute`, `netstat` - [yum 命令](yum.md) @@ -32,3 +30,4 @@ - [awesome-linux-software](https://github.com/LewisVo/Awesome-Linux-Software) - [linux-tutorial](https://github.com/judasn/Linux-Tutorial) - [菜鸟教程-Linux](http://www.runoob.com/linux/linux-tutorial.html) +- [Linux Tools Quick Tutorial](https://linuxtools-rst.readthedocs.io/zh_CN/latest/base/index.html) diff --git a/docs/linux/commands/Linux性能管理命令.md b/docs/linux/commands/Linux性能管理命令.md new file mode 100644 index 0000000..b856948 --- /dev/null +++ b/docs/linux/commands/Linux性能管理命令.md @@ -0,0 +1,165 @@ +--- +title: Linux 性能管理命令 +date: 2018/02/27 +categories: + - linux +tags: + - linux + - command +--- + +# Linux 性能管理命令 + +> 关键词:`df`, `du`, `top`, `free`, `iotop` + + + +- [df](#df) +- [du](#du) +- [top](#top) +- [free](#free) +- [iotop](#iotop) + + + +## df + +> df 命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 +> +> 参考:http://man.linuxde.net/df + +示例: + +```sh +# 查看系统磁盘设备,默认是 KB 为单位 +[root@LinServ-1 ~]# df +文件系统 1K-块 已用 可用 已用% 挂载点 +/dev/sda2 146294492 28244432 110498708 21% / +/dev/sda1 1019208 62360 904240 7% /boot +tmpfs 1032204 0 1032204 0% /dev/shm +/dev/sdb1 2884284108 218826068 2518944764 8% /data1 + +# 使用 -h 选项以 KB 以上的单位来显示,可读性高 +[root@LinServ-1 ~]# df -h +文件系统 容量 已用 可用 已用% 挂载点 +/dev/sda2 140G 27G 106G 21% / +/dev/sda1 996M 61M 884M 7% /boot +tmpfs 1009M 0 1009M 0% /dev/shm +/dev/sdb1 2.7T 209G 2.4T 8% /data1 + +# 查看全部文件系统 +[root@LinServ-1 ~]# df -a +文件系统 1K-块 已用 可用 已用% 挂载点 +/dev/sda2 146294492 28244432 110498708 21% / +proc 0 0 0 - /proc +sysfs 0 0 0 - /sys +devpts 0 0 0 - /dev/pts +/dev/sda1 1019208 62360 904240 7% /boot +tmpfs 1032204 0 1032204 0% /dev/shm +/dev/sdb1 2884284108 218826068 2518944764 8% /data1 +none 0 0 0 - /proc/sys/fs/binfmt_misc +``` + +## du + +> du 命令也是查看使用空间的,但是与 df 命令不同的是:du 命令是对文件和目录磁盘使用的空间的查看,还是和 df 命令有一些区别的。 +> +> 参考:http://man.linuxde.net/du + +示例: + +```sh +# 显示目录或者文件所占空间 +root@localhost [test]# du +608 ./test6 +308 ./test4 +4 ./scf/lib +4 ./scf/service/deploy/product +4 ./scf/service/deploy/info +12 ./scf/service/deploy +16 ./scf/service +4 ./scf/doc +4 ./scf/bin +32 ./scf +8 ./test3 +1288 . + +# 显示指定文件所占空间 +[root@localhost test]# du log2012.log +300 log2012.log + +# 查看指定目录的所占空间 +[root@localhost test]# du scf +4 scf/lib +4 scf/service/deploy/product +4 scf/service/deploy/info +12 scf/service/deploy +16 scf/service +4 scf/doc +4 scf/bin +32 scf + +# 显示多个文件所占空间 +[root@localhost test]# du log30.tar.gz log31.tar.gz +4 log30.tar.gz +4 log31.tar.gz + +# 只显示总和的大小 +[root@localhost test]# du -s +1288 . + +[root@localhost test]# du -s scf +32 scf +``` + +## top + +> top 命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过 top 命令所提供的互动式界面,用热键可以管理。 +> +> 参考:http://man.linuxde.net/top + +## free + +> free 命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 +> +> 参考:http://man.linuxde.net/free + +示例: + +```sh +free -t # 以总和的形式显示内存的使用信息 +free -s 10 # 周期性的查询内存使用信息,每10s 执行一次命令 + +# 显示内存使用情况 + +free -m + total used free shared buffers cached +Mem: 2016 1973 42 0 163 1497 +-/+ buffers/cache: 312 1703 +Swap: 4094 0 4094 +``` + +## iotop + +> iotop 命令是一个用来监视磁盘 I/O 使用状况的 top 类工具。iotop 具有与 top 相似的 UI,其中包括 PID、用户、I/O、进程等相关信息。Linux 下的 IO 统计工具如 iostat,nmon 等大多数是只能统计到 per 设备的读写情况,如果你想知道每个进程是如何使用 IO 的就比较麻烦,使用 iotop 命令可以很方便的查看。 +> +> 参考:http://man.linuxde.net/iotop + +示例: + +```sh +Total DISK read: 0.00 B/s | Total DISK write: 0.00 B/s + TID PRIO USER DISK READ DISK WRITE SWAPIN IO> command + 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init [3] + 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] + 3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] + 4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] + 5 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] + 6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] + 7 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1] + 8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1] + 9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/0] + 10 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/1] + 11 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper] +2572 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bluetooth] +``` diff --git a/docs/linux/commands/Linux用户管理命令.md b/docs/linux/commands/Linux用户管理命令.md new file mode 100644 index 0000000..780e85b --- /dev/null +++ b/docs/linux/commands/Linux用户管理命令.md @@ -0,0 +1,193 @@ +--- +title: Linux 用户管理命令 +date: 2018/02/27 +categories: + - linux +tags: + - linux + - command +--- + +# Linux 用户管理命令 + +> 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` + + + +- [groupadd](#groupadd) +- [groupdel](#groupdel) +- [groupmod](#groupmod) +- [useradd](#useradd) +- [userdel](#userdel) +- [usermod](#usermod) +- [passwd](#passwd) +- [su](#su) +- [sudo](#sudo) + + + +## groupadd + +> groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。 +> +> 参考:http://man.linuxde.net/groupadd + +示例: + +```sh +# 建立一个新组,并设置组 ID 加入系统 +groupadd -g 344 jsdigname +``` + +## groupdel + +> groupdel 命令用于删除指定的工作组,本命令要修改的系统文件包括 `/ect/group` 和 `/ect/gshadow`。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。 +> +> 参考:http://man.linuxde.net/groupdel + +示例: + +```sh +groupadd damon # 创建damon工作组 +groupdel damon # 删除这个工作组 +``` + +## groupmod + +> groupmod 命令更改群组识别码或名称。需要更改群组的识别码或名称时,可用 groupmod 指令来完成这项工作。 +> +> 参考:http://man.linuxde.net/groupmod + +## useradd + +> useradd 命令用于 Linux 中创建的新的系统用户。useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码.而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 `/etc/passwd` 文本文件中。 +> +> 参考:http://man.linuxde.net/useradd + +示例: + +```sh +# 新建用户加入组 +useradd –g sales jack –G company,employees # -g:加入主要组、-G:加入次要组 + +# 建立一个新用户账户,并设置 ID +useradd caojh -u 544 +``` + +## userdel + +> userdel 命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。 +> +> 参考:http://man.linuxde.net/userdel + +示例: + +userdel 命令很简单,比如我们现在有个用户 linuxde,其家目录位于`/var`目录中,现在我们来删除这个用户: + +```sh +userdel linuxde # 删除用户linuxde,但不删除其家目录及文件; +userdel -r linuxde # 删除用户linuxde,其家目录及文件一并删除; +``` + +## usermod + +> usermod 命令用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在 server 上更动相关的 NIS 设定。 +> +> 参考:http://man.linuxde.net/usermod + +示例: + +```sh +# 将 newuser2 添加到组 staff 中 +usermod -G staff newuser2 + +# 修改 newuser 的用户名为 newuser1 +usermod -l newuser1 newuser + +# 锁定账号 newuser1 +usermod -L newuser1 + +# 解除对 newuser1 的锁定 +usermod -U newuser1 +``` + +## passwd + +> passwd 命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。 +> +> 参考:http://man.linuxde.net/passwd + +示例: + +```sh +# 如果是普通用户执行 passwd 只能修改自己的密码。 +# 如果新建用户后,要为新用户创建密码,则用 passwd 用户名,注意要以 root 用户的权限来创建。 +[root@localhost ~]# passwd linuxde # 更改或创建linuxde用户的密码; +Changing password for user linuxde. +New UNIX password: # 请输入新密码; +Retype new UNIX password: # 再输入一次; +passwd: all authentication tokens updated successfully. # 成功; + +# 普通用户如果想更改自己的密码,直接运行 passwd 即可,比如当前操作的用户是 linuxde。 +[linuxde@localhost ~]$ passwd +Changing password for user linuxde. # 更改linuxde用户的密码; +(current) UNIX password: # 请输入当前密码; +New UNIX password: # 请输入新密码; +Retype new UNIX password: # 确认新密码; +passwd: all authentication tokens updated successfully. # 更改成功; + +# 比如我们让某个用户不能修改密码,可以用`-l`选项来锁定: +[root@localhost ~]# passwd -l linuxde # 锁定用户linuxde不能更改密码; +Locking password for user linuxde. +passwd: Success # 锁定成功; + +[linuxde@localhost ~]# su linuxde # 通过su切换到linuxde用户; +[linuxde@localhost ~]$ passwd # linuxde来更改密码; +Changing password for user linuxde. +Changing password for linuxde +(current) UNIX password: # 输入linuxde的当前密码; +passwd: Authentication token manipulation error # 失败,不能更改密码; + +[root@localhost ~]# passwd -d linuxde # 清除linuxde用户密码; +Removing password for user linuxde. +passwd: Success # 清除成功; + +[root@localhost ~]# passwd -S linuxde # 查询linuxde用户密码状态; +Empty password. # 空密码,也就是没有密码; +``` + +## su + +> su 命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。 +> +> 参考:http://man.linuxde.net/su + +示例: + +```sh +# 变更帐号为 root 并在执行 ls 指令后退出变回原使用者: +su -c ls root + +# 变更帐号为 root 并传入`-f`选项给新执行的 shell: +su root -f + +# 变更帐号为 test 并改变工作目录至 test 的家目录: +su -test +``` + +## sudo + +> sudo 命令用来以其他身份来执行命令,预设的身份为 root。在 `/etc/sudoers` 中设置了可执行 sudo 指令的用户。若其未经授权的用户企图使用 sudo,则会发出警告的邮件给管理员。用户使用 sudo 时,必须先输入密码,之后有 5 分钟的有效期限,超过期限则必须重新输入密码。 +> +> 参考:http://man.linuxde.net/sudo + +示例: + +```sh +# 指定用户执行命令 +sudo -u userb ls -l +# 列出目前的权限 +sudo -l +# 显示sudo设置 +sudo -L +``` diff --git a/docs/linux/commands/Linux系统管理命令.md b/docs/linux/commands/Linux系统管理命令.md new file mode 100644 index 0000000..17bb407 --- /dev/null +++ b/docs/linux/commands/Linux系统管理命令.md @@ -0,0 +1,190 @@ +--- +title: Linux 系统管理命令 +date: 2018/02/27 +categories: + - linux +tags: + - linux + - command +--- + +# Linux 系统管理命令 + +> 关键词:`reboot`, `exit`, `shutdown`, `date`, `mount`, `umount` + + + +- [reboot](#reboot) +- [exit](#exit) +- [shutdown](#shutdown) +- [date](#date) +- [mount](#mount) +- [umount](#umount) + + + +## reboot + +> reboot 命令用来重新启动正在运行的 Linux 操作系统。 +> +> 参考:http://man.linuxde.net/reboot + +示例: + +```sh +reboot # 重开机。 +reboot -w # 做个重开机的模拟(只有纪录并不会真的重开机)。 +``` + +## exit + +> exit 命令同于退出 shell,并返回给定值。在 shell 脚本中可以终止当前脚本执行。执行 exit 可使 shell 以指定的状态值退出。若不设置状态值参数,则 shell 以预设值退出。状态值 0 代表执行成功,其他值代表执行失败。 +> +> 参考:http://man.linuxde.net/exit + +示例: + +```sh +# 退出当前 shell +[root@localhost ~]# exit +logout + +# 在脚本中,进入脚本所在目录,否则退出 +cd $(dirname $0) || exit 1 + +# 在脚本中,判断参数数量,不匹配就打印使用方式,退出 +if [ "$#" -ne "2" ]; then + echo "usage: $0 " + exit 2 +fi + +# 在脚本中,退出时删除临时文件 +trap "rm -f tmpfile; echo Bye." EXIT + +# 检查上一命令的退出码 +./mycommand.sh +EXCODE=$? +if [ "$EXCODE" == "0" ]; then + echo "O.K" +fi +``` + +## shutdown + +> shutdown 命令用来系统关机命令。shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。 +> +> 参考:http://man.linuxde.net/shutdown + +示例: + +```sh +# 指定现在立即关机 +shutdown -h now + +# 指定 5 分钟后关机,同时送出警告信息给登入用户 +shutdown +5 "System will shutdown after 5 minutes" +``` + +## date + +> date 命令是显示或设置系统时间与日期。 +> +> 参考:http://man.linuxde.net/date + +示例: + +```sh +# 格式化输出 +date +"%Y-%m-%d" +2009-12-07 + +# 输出昨天日期 +date -d "1 day ago" +"%Y-%m-%d" +2012-11-19 + +# 2 秒后输出 +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.00 + +# apache 格式转换 +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. +``` + +## mount + +> mount 命令用于挂载文件系统到指定的挂载点。此命令的最常用于挂载 cdrom,使我们可以访问 cdrom 中的数据,因为你将光盘插入 cdrom 中,Linux 并不会自动挂载,必须使用 Linux mount 命令来手动完成挂载。 +> +> 参考:http://man.linuxde.net/mount + +示例: + +```sh +# 将 /dev/hda1 挂在 /mnt 之下 +mount /dev/hda1 /mnt + +# 将 /dev/hda1 用唯读模式挂在 /mnt 之下 +mount -o ro /dev/hda1 /mnt + +# 将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom 之下 +# 用这种方法可以将一般网络上可以找到的 Linux ISO 在不烧录成光碟的情况下检视其内容 +mount -o loop /tmp/image.iso /mnt/cdrom +``` + +## umount + +> umount 命令用于卸载已经挂载的文件系统。利用设备名或挂载点都能 umount 文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。 +> +> 参考:http://man.linuxde.net/umount + +示例: + +```sh +# 通过设备名卸载 +umount -v /dev/sda1 +/dev/sda1 umounted + +# 通过挂载点卸载 +umount -v /mnt/mymount/ +/tmp/diskboot.img umounted +``` diff --git a/docs/linux/commands/系统管理/README.md b/docs/linux/commands/系统管理/README.md deleted file mode 100644 index 5e42b9b..0000000 --- a/docs/linux/commands/系统管理/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# linux 常用命令-系统管理 - -* [linux 常用命令-系统操作](系统操作.md) -* [linux 常用命令-系统设置](系统设置.md) -* [linux 常用命令-用户和工作组管理](用户和工作组管理.md) -* [linux 常用命令-进程和作业管理](进程和作业管理.md) -* [linux 常用命令-系统性能管理](系统性能管理.md) diff --git a/docs/linux/commands/系统管理/用户和工作组管理.md b/docs/linux/commands/系统管理/用户和工作组管理.md deleted file mode 100644 index 3200ded..0000000 --- a/docs/linux/commands/系统管理/用户和工作组管理.md +++ /dev/null @@ -1,677 +0,0 @@ ---- -title: linux 常用命令-用户和工作组管理 -date: 2018/02/27 -categories: -- linux -tags: -- linux -- command ---- - - - -- [linux 常用命令-用户和工作组管理](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E7%94%A8%E6%88%B7%E5%92%8C%E5%B7%A5%E4%BD%9C%E7%BB%84%E7%AE%A1%E7%90%86) - - [groupadd](#groupadd) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [groupdel](#groupdel) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [groupmod](#groupmod) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [useradd](#useradd) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [userdel](#userdel) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [usermod](#usermod) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [passwd](#passwd) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [知识扩展](#%E7%9F%A5%E8%AF%86%E6%89%A9%E5%B1%95) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [su](#su) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [sudo](#sudo) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - - -# linux 常用命令-用户和工作组管理 - -## groupadd - -用于创建一个新的工作组 - -### 补充说明 - -**groupadd命令** 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。 - -### 语法 - -``` -groupadd(选项)(参数) -``` - -### 选项 - -``` --g:指定新建工作组的id; --r:创建系统工作组,系统工作组的组ID小于500; --K:覆盖配置文件“/ect/login.defs”; --o:允许添加组ID号不唯一的工作组。 -``` - -### 参数 - -组名:指定新建工作组的组名。 - -### 实例 - -建立一个新组,并设置组ID加入系统: - -``` -groupadd -g 344 jsdigname -``` - -此时在`/etc/passwd`文件中产生一个组ID(GID)是344的项目。 - -## groupdel - -用于删除指定的工作组 - -### 补充说明 - -**groupdel命令** 用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。 - -### 语法 - -``` -groupdel(参数) -``` - -### 参数 - -组:要删除的工作组名。 - -### 实例 - -``` -groupadd damon //创建damon工作组 -groupdel damon //删除这个工作组 -``` - -## groupmod - -更改群组识别码或名称 - -### 补充说明 - -**groupmod命令** 更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。 - -### 语法 - -``` -groupmod(选项)(参数) -``` - -### 选项 - -``` --g<群组识别码>:设置欲使用的群组识别码; --o:重复使用群组识别码; --n<新群组名称>:设置欲使用的群组名称。 -``` - -### 参数 - -组名:指定要修改的工作的组名。 - -## useradd - -创建的新的系统用户 - -### 补充说明 - -**useradd命令** 用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在`/etc/passwd`文本文件中。 - -在Slackware中,adduser指令是个script程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的useradd命令建立新用户,如此可方便管理员建立用户帐号。在Red Hat Linux中, **adduser命令** 则是useradd命令的符号连接,两者实际上是同一个指令。 - -### 语法 - -``` -useradd(选项)(参数) -``` - -### 选项 - -``` --c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中; --d<登入目录>:指定用户登入时的启始目录; --D:变更预设值; --e<有效期限>:指定帐号的有效期限; --f<缓冲天数>:指定在密码过期后多少天即关闭该帐号; --g<群组>:指定用户所属的群组; --G<群组>:指定用户所属的附加群组; --m:自动建立用户的登入目录; --M:不要自动建立用户的登入目录; --n:取消建立以用户名称为名的群组; --r:建立系统帐号; --s:指定用户登入后所使用的shell; --u:指定用户id。 -``` - -### 参数 - -用户名:要创建的用户名。 - -### 实例 - -新建用户加入组: - -``` -useradd –g sales jack –G company,employees //-g:加入主要组、-G:加入次要组 -``` - -建立一个新用户账户,并设置ID: - -``` -useradd caojh -u 544 -``` - -需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。 - -## userdel - -用于删除给定的用户以及与用户相关的文件 - -### 补充说明 - -**userdel命令** 用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。 - -### 语法 - -``` -userdel(选项)(参数) -``` - -### 选项 - -``` --f:强制删除用户,即使用户当前已登录; --r:删除用户的同时,删除与用户相关的所有文件。 -``` - -### 参数 - -用户名:要删除的用户名。 - -### 实例 - -userdel命令很简单,比如我们现在有个用户linuxde,其家目录位于`/var`目录中,现在我们来删除这个用户: - -``` -userdel linuxde //删除用户linuxde,但不删除其家目录及文件; -userdel -r linuxde //删除用户linuxde,其家目录及文件一并删除; -``` - -请不要轻易用`-r`选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。 - -其实也有最简单的办法,但这种办法有点不安全,也就是直接在`/etc/passwd`中删除您想要删除用户的记录;但最好不要这样做,`/etc/passwd`是极为重要的文件,可能您一不小心会操作失误。 - -## usermod - -用于修改用户的基本信息 - -### 补充说明 - -**usermod命令** 用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。采用NIS server须在server上更动相关的NIS设定。 - -### 语法 - -``` -usermod(选项)(参数) -``` - -### 选项 - -``` --c<备注>:修改用户帐号的备注文字; --d<登入目录>:修改用户登入时的目录; --e<有效期限>:修改帐号的有效期限; --f<缓冲天数>:修改在密码过期后多少天即关闭该帐号; --g<群组>:修改用户所属的群组; --G<群组>;修改用户所属的附加群组; --l<帐号名称>:修改用户帐号名称; --L:锁定用户密码,使密码无效; --s:修改用户登入后所使用的shell; --u:修改用户ID; --U:解除密码锁定。 -``` - -### 参数 - -登录名:指定要修改信息的用户登录名。 - -### 实例 - -将newuser2添加到组staff中: - -``` -usermod -G staff newuser2 -``` - -修改newuser的用户名为newuser1: - -``` -usermod -l newuser1 newuser -``` - -锁定账号newuser1: - -``` -usermod -L newuser1 -``` - -解除对newuser1的锁定: - -``` -usermod -U newuser1 -``` - -## passwd - -用于让用户可以更改自己的密码 - -### 补充说明 - -**passwd命令** 用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。 - -### 语法 - -``` -passwd(选项)(参数) -``` - -### 选项 - -``` --d:删除密码,仅有系统管理者才能使用; --f:强制执行; --k:设置只有在密码过期失效后,方能更新; --l:锁住密码; --s:列出密码的相关信息,仅有系统管理者才能使用; --u:解开已上锁的帐号。 -``` - -### 参数 - -用户名:需要设置密码的用户名。 - -### 知识扩展 - -与用户、组账户信息相关的文件 - -存放用户信息: - -``` -/etc/passwd -/etc/shadow -``` - -存放组信息: - -``` -/etc/group -/etc/gshadow -``` - -用户信息文件分析(每项用`:`隔开) - -``` -例如:jack:X:503:504:::/home/jack/:/bin/bash -jack  //用户名 -X  //口令、密码 -503  //用户id(0代表root、普通新建用户从500开始) -504  //所在组 -:  //描述 -/home/jack/  //用户主目录 -/bin/bash  //用户缺省Shell -``` - -组信息文件分析 - -``` -例如:jack:$!$:???:13801:0:99999:7:*:*: -jack  //组名 -$!$  //被加密的口令 -13801  //创建日期与今天相隔的天数 -0  //口令最短位数 -99999  //用户口令 -7  //到7天时提醒 -*  //禁用天数 -*  //过期天数 -``` - -### 实例 - -如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。 - -``` -[root@localhost ~]# passwd linuxde //更改或创建linuxde用户的密码; -Changing password for user linuxde. -New UNIX password: //请输入新密码; -Retype new UNIX password: //再输入一次; -passwd: all authentication tokens updated successfully. //成功; -``` - -普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。 - -``` -[linuxde@localhost ~]$ passwd -Changing password for user linuxde. //更改linuxde用户的密码; -(current) UNIX password: //请输入当前密码; -New UNIX password: //请输入新密码; -Retype new UNIX password: //确认新密码; -passwd: all authentication tokens updated successfully. //更改成功; -``` - -比如我们让某个用户不能修改密码,可以用`-l`选项来锁定: - -``` -[root@localhost ~]# passwd -l linuxde //锁定用户linuxde不能更改密码; -Locking password for user linuxde. -passwd: Success //锁定成功; - -[linuxde@localhost ~]# su linuxde //通过su切换到linuxde用户; -[linuxde@localhost ~]$ passwd //linuxde来更改密码; -Changing password for user linuxde. -Changing password for linuxde -(current) UNIX password: //输入linuxde的当前密码; -passwd: Authentication token manipulation error //失败,不能更改密码; -``` - -再来一例: - -``` -[root@localhost ~]# passwd -d linuxde //清除linuxde用户密码; -Removing password for user linuxde. -passwd: Success //清除成功; - -[root@localhost ~]# passwd -S linuxde //查询linuxde用户密码状态; -Empty password. //空密码,也就是没有密码; -``` - -注意:当我们清除一个用户的密码时,登录时就无需密码,这一点要加以注意。 - -## su - -用于切换当前用户身份到其他用户身份 - -### 补充说明 - -**su命令** 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。 - -### 语法 - -``` -su(选项)(参数) -``` - -### 选项 - -``` --c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份; --f或——fast:适用于csh与tsch,使shell不用去读取启动文件; --l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量; --m,-p或--preserve-environment:变更身份时,不要变更环境变量; --s或--shell=:指定要执行的shell; ---help:显示帮助; ---version;显示版本信息。 -``` - -### 参数 - -用户:指定要切换身份的目标用户。 - -### 实例 - -变更帐号为root并在执行ls指令后退出变回原使用者: - -``` -su -c ls root -``` - -变更帐号为root并传入`-f`选项给新执行的shell: - -``` -su root -f -``` - -变更帐号为test并改变工作目录至test的家目录: - -``` -su -test -``` - -## sudo - -以其他身份来执行命令 - -### 补充说明 - -**sudo命令** 用来以其他身份来执行命令,预设的身份为root。在`/etc/sudoers`中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。 - -### 语法 - -``` -sudo(选项)(参数) -``` - -### 选项 - -``` --b:在后台执行指令; --h:显示帮助; --H:将HOME环境变量设为新身份的HOME环境变量; --k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。 --l:列出目前用户可执行与无法执行的指令; --p:改变询问密码的提示符号; --s:执行指定的shell; --u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份; --v:延长密码有效期限5分钟; --V :显示版本信息。 -``` - -### 参数 - -指令:需要运行的指令和对应的参数。 - -### 实例 - -``` -$ sudo su - -# env | grep -E '(HOME|SHELL|USER|LOGNAME|^PATH|PWD|TEST_ETC|TEST_ZSH|TEST_PRO|TEST_BASH|TEST_HOME|SUDO)' -``` - -这个命令相当于使用root超级用户重新登录一次shell,只不过密码是使用的当前用户的密码。而且重要是,该命令会 **重新加载/etc/profile文件以及/etc/bashrc文件等系统配置文件,并且还会重新加载root用户的$SHELL环境变量所对应的配置文件** ,比如:root超级用户的$SHELL是/bin/bash,则会加载/root/.bashrc等配置。如果是/bin/zsh,则会加载/root/.zshrc等配置,执行后是完全的root环境。 - -``` -$ sudo -i -# env | grep -E '(HOME|SHELL|USER|LOGNAME|^PATH|PWD|TEST_ETC|TEST_ZSH|TEST_PRO|TEST_BASH|TEST_HOME|SUDO)' -``` - -这个命令基本与 `sudo su -` 相同,执行后也是root超级用户的环境,只不过是多了一些当前用户的信息。 - -``` -$ sudo -s -# env|grep -E '(HOME|SHELL|USER|LOGNAME|^PATH|PWD|TEST_ETC|TEST_ZSH|TEST_PRO|TEST_BASH|TEST_HOME|SUDO)' --color -``` - -这个命令相当于 **以当前用户的$SHELL开启了一个root超级用户的no-login的shell,不会加载/etc/profile等系统配置** 。所以/etc/profile文件中定义的TEST_ETC环境变量就看不到了,但是会**加载root用户对应的配置文件**,比如root用户的$SHELL是/bin/zsh,那么会加载/root/.zshrc配置文件,执行完后,不会切换当前用户的目录。 - -配置sudo必须通过编辑`/etc/sudoers`文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。 - -visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像: - -``` ->>> sudoers file: syntax error, line 22 << -``` - -此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。 - -现在,我们一起来看一下神秘的配置文件,学一下如何编写它。让我们从一个简单的例子开始:让用户Foobar可以通过sudo执行所有root可执行的命令。以root身份用visudo打开配置文件,可以看到类似下面几行: - -``` -# Runas alias specification -# User privilege specificationroot ALL=(ALL)ALL -``` - -我们一看就明白个差不多了,root有所有权限,只要仿照现有root的例子就行,我们在下面加一行(最好用tab作为空白): - -``` -foobar ALL=(ALL) ALL -``` - -保存退出后,切换到foobar用户,我们用它的身份执行命令: - -``` -[foobar@localhost ~]$ ls /root -ls: /root: 权限不够 - -[foobar@localhost ~]$ sudo ls /root -PassWord: -anaconda-ks.cfg Desktop install.log install.log.syslog -``` - -好了,我们限制一下foobar的权利,不让他为所欲为。比如我们只想让他像root那样使用ls和ifconfig,把那一行改为: - -``` -foobar localhost= /sbin/ifconfig, /bin/ls -``` - -再来执行命令: - -``` -[foobar@localhost ~]$ sudo head -5 /etc/shadow -Password: -Sorry, user foobar is not allowed to execute '/usr/bin/head -5 /etc/shadow' as root on localhost.localdomain. - -[foobar@localhost ~]$ sudo /sbin/ifconfigeth0 Linkencap:Ethernet HWaddr 00:14:85:EC:E9:9B... -``` - -现在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件: - -``` -foobar linux=(jimmy,rene) /bin/kill -``` - -但这还有个问题,foobar到底以jimmy还是rene的身份执行?这时我们应该想到了`sudo -u`了,它正是用在这种时候。 foobar可以使用`sudo -u jimmy kill PID`或者`sudo -u rene kill PID`,但这样挺麻烦,其实我们可以不必每次加`-u`,把rene或jimmy设为默认的目标用户即可。再在上面加一行: - -``` -Defaults:foobar runas_default=rene -``` - -Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行: - -``` -Defaults env_reset -``` - -另一个问题是,很多时候,我们本来就登录了,每次使用sudo还要输入密码就显得烦琐了。我们可不可以不再输入密码呢?当然可以,我们这样修改配置文件: - -``` -foobar localhost=NOPASSWD: /bin/cat, /bin/ls -``` - -再来sudo一下: - -``` -[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg Desktop install.log -install.log.syslog -``` - -当然,你也可以说“某些命令用户foobar不可以运行”,通过使用!操作符,但这不是一个好主意。因为,用!操作符来从ALL中“剔出”一些命令一般是没什么效果的,一个用户完全可以把那个命令拷贝到别的地方,换一个名字后再来运行。 - - **日志与安全** - -sudo为安全考虑得很周到,不仅可以记录日志,还能在有必要时向系统管理员报告。但是,sudo的日志功能不是自动的,必须由管理员开启。这样来做: - -``` -touch /var/log/sudo -vi /etc/syslog.conf -``` - -在syslog.conf最后面加一行(必须用tab分割开)并保存: - -``` -local2.debug /var/log/sudo -``` - -重启日志守候进程, - -``` -ps aux grep syslogd -``` - -把得到的syslogd进程的PID(输出的第二列是PID)填入下面: - -``` -kill –HUP PID -``` - -这样,sudo就可以写日志了: - -``` -[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg -Desktop install.log -install.log.syslog -$cat /var/log/sudoJul 28 22:52:54 localhost sudo: foobar : -TTY=pts/1 ; pwd=/home/foobar ; USER=root ; command=/bin/ls /root -``` - -不过,有一个小小的“缺陷”,sudo记录日志并不是很忠实: - -``` -[foobar@localhost ~]$ sudo cat /etc/shadow > /dev/null -cat /var/log/sudo...Jul 28 23:10:24 localhost sudo: foobar : TTY=pts/1 ; -PWD=/home/foobar ; USER=root ; COMMAND=/bin/cat /etc/shadow -``` - -重定向没有被记录在案!为什么?因为在命令运行之前,shell把重定向的工作做完了,sudo根本就没看到重定向。这也有个好处,下面的手段不会得逞: - -``` -[foobar@localhost ~]$ sudo ls /root > /etc/shadowbash: /etc/shadow: 权限不够 -``` - -sudo 有自己的方式来保护安全。以root的身份执行`sudo-V`,查看一下sudo的设置。因为考虑到安全问题,一部分环境变量并没有传递给sudo后面的命令,或者被检查后再传递的,比如:PATH,HOME,SHELL等。当然,你也可以通过sudoers来配置这些环境变量。 diff --git a/docs/linux/commands/系统管理/系统性能管理.md b/docs/linux/commands/系统管理/系统性能管理.md deleted file mode 100644 index d09d429..0000000 --- a/docs/linux/commands/系统管理/系统性能管理.md +++ /dev/null @@ -1,548 +0,0 @@ ---- -title: linux 常用命令-系统性能管理 -date: 2018/02/27 -categories: -- linux -tags: -- linux -- command ---- - - - -- [linux 常用命令-系统性能管理](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E7%AE%A1%E7%90%86) - - [df](#df) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [du](#du) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [top](#top) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [top交互命令](#top%E4%BA%A4%E4%BA%92%E5%91%BD%E4%BB%A4) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [free](#free) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [iotop](#iotop) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [安装](#%E5%AE%89%E8%A3%85) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [实例](#%E5%AE%9E%E4%BE%8B) - - - -# linux 常用命令-系统性能管理 - -## df - -显示磁盘的相关信息 - -### 补充说明 - -**df命令** 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 - -### 语法 - -``` -df(选项)(参数) -``` - -### 选项 - -``` --a或--all:包含全部的文件系统; ---block-size=<区块大小>:以指定的区块大小来显示区块数目; --h或--human-readable:以可读性较高的方式来显示信息; --H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes; --i或--inodes:显示inode的信息; --k或--kilobytes:指定区块大小为1024字节; --l或--local:仅显示本地端的文件系统; --m或--megabytes:指定区块大小为1048576字节; ---no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值; --P或--portability:使用POSIX的输出格式; ---sync:在取得磁盘使用信息前,先执行sync指令; --t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息; --T或--print-type:显示文件系统的类型; --x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息; ---help:显示帮助; ---version:显示版本信息。 -``` - -### 参数 - -文件:指定文件系统上的文件。 - -### 实例 - -查看系统磁盘设备,默认是KB为单位: - -``` -[root@LinServ-1 ~]# df -文件系统 1K-块 已用 可用 已用% 挂载点 -/dev/sda2 146294492 28244432 110498708 21% / -/dev/sda1 1019208 62360 904240 7% /boot -tmpfs 1032204 0 1032204 0% /dev/shm -/dev/sdb1 2884284108 218826068 2518944764 8% /data1 -``` - -使用`-h`选项以KB以上的单位来显示,可读性高: - -``` -[root@LinServ-1 ~]# df -h -文件系统 容量 已用 可用 已用% 挂载点 -/dev/sda2 140G 27G 106G 21% / -/dev/sda1 996M 61M 884M 7% /boot -tmpfs 1009M 0 1009M 0% /dev/shm -/dev/sdb1 2.7T 209G 2.4T 8% /data1 -``` - -查看全部文件系统: - -``` -[root@LinServ-1 ~]# df -a -文件系统 1K-块 已用 可用 已用% 挂载点 -/dev/sda2 146294492 28244432 110498708 21% / -proc 0 0 0 - /proc -sysfs 0 0 0 - /sys -devpts 0 0 0 - /dev/pts -/dev/sda1 1019208 62360 904240 7% /boot -tmpfs 1032204 0 1032204 0% /dev/shm -/dev/sdb1 2884284108 218826068 2518944764 8% /data1 -none 0 0 0 - /proc/sys/fs/binfmt_misc -``` - -## du - -显示每个文件和目录的磁盘使用空间 - -### 补充说明 - -**du命令** 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。 - -### 语法 - -``` -du [选项][文件] -``` - -### 选项 - -``` --a或-all 显示目录中个别文件的大小。 --b或-bytes 显示目录或文件大小时,以byte为单位。 --c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 --k或--kilobytes 以KB(1024bytes)为单位输出。 --m或--megabytes 以MB为单位输出。 --s或--summarize 仅显示总计,只列出最后加总的值。 --h或--human-readable 以K,M,G为单位,提高信息的可读性。 --x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 --L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。 --S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。 --X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。 ---exclude=<目录或文件> 略过指定的目录或文件。 --D或--dereference-args 显示指定符号链接的源文件大小。 --H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。 --l或--count-links 重复计算硬件链接的文件。 -``` - -### 实例 - -显示目录或者文件所占空间: - -``` -root@localhost [test]# du -608 ./test6 -308 ./test4 -4 ./scf/lib -4 ./scf/service/deploy/product -4 ./scf/service/deploy/info -12 ./scf/service/deploy -16 ./scf/service -4 ./scf/doc -4 ./scf/bin -32 ./scf -8 ./test3 -1288 . -``` - -只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小 - -显示指定文件所占空间: - -``` -[root@localhost test]# du log2012.log -300 log2012.log -``` - -查看指定目录的所占空间: - -``` -[root@localhost test]# du scf -4 scf/lib -4 scf/service/deploy/product -4 scf/service/deploy/info -12 scf/service/deploy -16 scf/service -4 scf/doc -4 scf/bin -32 scf -``` - -显示多个文件所占空间: - -``` -[root@localhost test]# du log30.tar.gz log31.tar.gz -4 log30.tar.gz -4 log31.tar.gz -``` - -只显示总和的大小: - -``` -[root@localhost test]# du -s -1288 . - -[root@localhost test]# du -s scf -32 scf - -[root@localhost test]# cd .. -[root@localhost soft]# du -s test -1288 test -``` - -## top - -显示或管理执行中的程序 - -### 补充说明 - -**top命令** 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。 - -### 语法 - -``` -top(选项) -``` - -### 选项 - -``` --b:以批处理模式操作; --c:显示完整的治命令; --d:屏幕刷新间隔时间; --I:忽略失效过程; --s:保密模式; --S:累积模式; --i<时间>:设置间隔时间; --u<用户名>:指定用户名; --p<进程号>:指定进程; --n<次数>:循环显示的次数。 -``` - -### top交互命令 - -在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。 - -``` -h:显示帮助画面,给出一些简短的命令总结说明; -k:终止一个进程; -i:忽略闲置和僵死进程,这是一个开关式命令; -q:退出程序; -r:重新安排一个进程的优先级别; -S:切换到累计模式; -s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s; -f或者F:从当前显示中添加或者删除项目; -o或者O:改变显示项目的顺序; -l:切换显示平均负载和启动时间信息; -m:切换显示内存信息; -t:切换显示进程和CPU状态信息; -c:切换显示命令名称和完整命令行; -M:根据驻留内存大小进行排序; -P:根据CPU使用百分比大小进行排序; -T:根据时间/累计时间进行排序; -w:将当前设置写入~/.toprc文件中。 -``` - -### 实例 - -``` -top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92 -Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie -Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st -Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers -Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached -``` - - **解释:** - -* top - 09:44:56[当前系统时间], -* 16 days[系统已经运行了16天], -* 1 user[个用户当前登录], -* load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度] -* Tasks: 145 total[总进程数], -* 2 running[正在运行的进程数], -* 143 sleeping[睡眠的进程数], -* 0 stopped[停止的进程数], -* 0 zombie[冻结进程数], -* Cpu(s): 99.8%us[用户空间占用CPU百分比], -* 0.1%sy[内核空间占用CPU百分比], -* 0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比], -* 0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比], -* 0.0%hi[], -* 0.0%st[], -* Mem: 4147888k total[物理内存总量], -* 2493092k used[使用的物理内存总量], -* 1654796k free[空闲内存总量], -* 158188k buffers[用作内核缓存的内存量] -* Swap:  5144568k total[交换区总量], -* 56k used[使用的交换区总量], -* 5144512k free[空闲交换区总量], -* 2013180k cached[缓冲的交换区总量], - -## free - -显示内存的使用情况 - -### 补充说明 - -**free命令** 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 - -### 语法 - -``` -free(选项) -``` - -### 选项 - -```bash --b # 以Byte为单位显示内存使用情况; --k # 以KB为单位显示内存使用情况; --m # 以MB为单位显示内存使用情况; --g # 以GB为单位显示内存使用情况。 --o # 不显示缓冲区调节列; --s<间隔秒数> # 持续观察内存使用状况; --t # 显示内存总和列; --V # 显示版本信息。 -``` - -### 实例 - -```bash -free -t # 以总和的形式显示内存的使用信息 -free -s 10 # 周期性的查询内存使用信息,每10s 执行一次命令 -``` - -显示内存使用情况 - -```bash -free -m - total used free shared buffers cached -Mem: 2016 1973 42 0 163 1497 --/+ buffers/cache: 312 1703 -Swap: 4094 0 4094 -``` - - **第一部分Mem行解释:** - -``` -total:内存总数; -used:已经使用的内存数; -free:空闲的内存数; -shared:当前已经废弃不用; -buffers Buffer:缓存内存数; -cached Page:缓存内存数。 -``` - -关系:total = used + free - - **第二部分(-/+ buffers/cache)解释:** - -``` -(-buffers/cache) used内存数:第一部分Mem行中的 used – buffers – cached -(+buffers/cache) free内存数: 第一部分Mem行中的 free + buffers + cached -``` - -可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。 - -第三部分是指交换分区。 - -输出结果的第四行是交换分区SWAP的,也就是我们通常所说的虚拟内存。 -区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached. - -第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。 - -所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。 -如本机情况的可用内存为: - -18007156=2098428KB+4545340KB+11363424KB - -接下来解释什么时候内存会被交换,以及按什么方交换。 - -当可用内存少于额定值的时候,就会开会进行交换。如何看额定值: - -```bash -cat /proc/meminfo - -MemTotal: 16140816 kB -MemFree: 816004 kB -MemAvailable: 2913824 kB -Buffers: 17912 kB -Cached: 2239076 kB -SwapCached: 0 kB -Active: 12774804 kB -Inactive: 1594328 kB -Active(anon): 12085544 kB -Inactive(anon): 94572 kB -Active(file): 689260 kB -Inactive(file): 1499756 kB -Unevictable: 116888 kB -Mlocked: 116888 kB -SwapTotal: 8191996 kB -SwapFree: 8191996 kB -Dirty: 56 kB -Writeback: 0 kB -AnonPages: 12229228 kB -Mapped: 117136 kB -Shmem: 58736 kB -Slab: 395568 kB -SReclaimable: 246700 kB -SUnreclaim: 148868 kB -KernelStack: 30496 kB -PageTables: 165104 kB -NFS_Unstable: 0 kB -Bounce: 0 kB -WritebackTmp: 0 kB -CommitLimit: 16262404 kB -Committed_AS: 27698600 kB -VmallocTotal: 34359738367 kB -VmallocUsed: 311072 kB -VmallocChunk: 34350899200 kB -HardwareCorrupted: 0 kB -AnonHugePages: 3104768 kB -HugePages_Total: 0 -HugePages_Free: 0 -HugePages_Rsvd: 0 -HugePages_Surp: 0 -Hugepagesize: 2048 kB -DirectMap4k: 225536 kB -DirectMap2M: 13279232 kB -DirectMap1G: 5242880 kB -``` - -交换将通过三个途径来减少系统中使用的物理页面的个数:  - -1. 减少缓冲与页面cache的大小, -2. 将系统V类型的内存页面交换出去,  -3. 换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。 - -事实上,少量地使用swap是不是影响到系统性能的。 - -那buffers和cached都是缓存,两者有什么区别呢? - -为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式: - -Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。 -磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。 - -Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。 - -Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。 - -简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。 - -所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准. - -如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。 - -## iotop - -用来监视磁盘I/O使用状况的工具 - -### 补充说明 - -**iotop命令** 是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。 - -iotop使用Python语言编写而成,要求Python2.5(及以上版本)和Linux kernel2.6.20(及以上版本)。iotop提供有源代码及rpm包,可从其官方主页下载。 - -### 安装 - - **Ubuntu** - -``` -apt-get install iotop -``` - - **CentOS** - -``` -yum install iotop -``` - - **编译安装** - -``` -wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz -tar zxf iotop-0.4.4.tar.gz -python setup.py build -python setup.py install - -``` - -### 语法 - -``` -iotop(选项) -``` - -### 选项 - -``` --o:只显示有io操作的进程 --b:批量显示,无交互,主要用作记录到文件。 --n NUM:显示NUM次,主要用于非交互式模式。 --d SEC:间隔SEC秒显示一次。 --p PID:监控的进程pid。 --u USER:监控的进程用户。 -``` - - **iotop常用快捷键:** - -1. 左右箭头:改变排序方式,默认是按IO排序。 -2. r:改变排序顺序。 -3. o:只显示有IO输出的进程。 -4. p:进程/线程的显示方式的切换。 -5. a:显示累积使用量。 -6. q:退出。 - -### 实例 - -直接执行iotop就可以看到效果了: - -``` -Total DISK read: 0.00 B/s | Total DISK write: 0.00 B/s - TID PRIO USER DISK READ DISK WRITE SWAPIN IO> command - 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init [3] - 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] - 3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] - 4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] - 5 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] - 6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] - 7 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1] - 8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1] - 9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/0] - 10 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/1] - 11 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper] -2572 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bluetooth] -``` \ No newline at end of file diff --git a/docs/linux/commands/系统管理/系统操作.md b/docs/linux/commands/系统管理/系统操作.md deleted file mode 100644 index c6124e6..0000000 --- a/docs/linux/commands/系统管理/系统操作.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: linux 常用命令-系统操作 -date: 2018/02/28 -categories: -- linux -tags: -- linux -- command ---- - - - -- [linux 常用命令-系统操作](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E7%B3%BB%E7%BB%9F%E6%93%8D%E4%BD%9C) - - [reboot](#reboot) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [exit](#exit) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [shutdown](#shutdown) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - - -# linux 常用命令-系统操作 - -## reboot - -重新启动正在运行的Linux操作系统 - -### 补充说明 - -**reboot命令** 用来重新启动正在运行的Linux操作系统。 - -### 语法 - -``` -reboot(选项) -``` - -### 选项 - -``` --d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果; --f:强制重新开机,不调用shutdown指令的功能; --i:在重开机之前,先关闭所有网络界面; --n:重开机之前不检查是否有未结束的程序; --w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。 -``` - -### 实例 - -``` -reboot //重开机。 -reboot -w //做个重开机的模拟(只有纪录并不会真的重开机)。 -``` - -## exit - -退出当前的shell - -### 补充说明 - -**exit命令** 同于退出shell,并返回给定值。在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。 - -### 语法 - -``` -exit(参数) -``` - -### 参数 - -返回值:指定shell返回值。 - -### 实例 - -退出当前shell: - -``` -[root@localhost ~]# exit -logout -``` - -在脚本中,进入脚本所在目录,否则退出: - -``` -cd $(dirname $0) || exit 1 -``` - -在脚本中,判断参数数量,不匹配就打印使用方式,退出: - -``` -if [ "$#" -ne "2" ]; then - echo "usage: $0 " - exit 2 -fi -``` - -在脚本中,退出时删除临时文件: - -``` -trap "rm -f tmpfile; echo Bye." EXIT -``` - -检查上一命令的退出码: - -``` -./mycommand.sh -EXCODE=$? -if [ "$EXCODE" == "0" ]; then - echo "O.K" -fi -``` - -## shutdown - -用来执行系统关机的命令。 - -### 补充说明 - -**shutdown命令** 用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。 - -### 语法 - -``` -shutdown(选项)(参数) -``` - -### 选项 - -``` --c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令; --f:重新启动时不执行fsck; --F:重新启动时执行fsck; --h:将系统关机; --k:只是送出信息给所有用户,但不会实际关机; --n:不调用init程序进行关机,而由shutdown自己进行; --r:shutdown之后重新启动; --t<秒数>:送出警告信息和删除信息之间要延迟多少秒。 -``` - -### 参数 - -* [时间]:设置多久时间后执行shutdown指令; -* [警告信息]:要传送给所有登入用户的信息。 - -### 实例 - -指定现在立即关机: - -``` -shutdown -h now -``` - -指定5分钟后关机,同时送出警告信息给登入用户: - -``` -shutdown +5 "System will shutdown after 5 minutes" -``` \ No newline at end of file diff --git a/docs/linux/commands/系统管理/系统设置.md b/docs/linux/commands/系统管理/系统设置.md deleted file mode 100644 index 164faea..0000000 --- a/docs/linux/commands/系统管理/系统设置.md +++ /dev/null @@ -1,332 +0,0 @@ ---- -title: linux 常用命令-系统设置 -date: 2018/02/28 -categories: -- linux -tags: -- linux -- command ---- - - - -- [linux 常用命令-系统设置](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E7%B3%BB%E7%BB%9F%E8%AE%BE%E7%BD%AE) - - [date](#date) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [日期格式字符串列表](#%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%97%E8%A1%A8) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [mount](#mount) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [umount](#umount) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - - -# linux 常用命令-系统设置 - -## 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 显示出上午或下午 -%r 时间,12小时制 -%s 从1970年1月1日0点到目前经历的秒数 -%S 秒(00~59) -%T 时间(24小时制)(hh:mm:ss) -%X 显示时间的格式(%H时%M分%S秒) -%Z 按字母表排序的时区缩写 -%a 星期名缩写 -%A 星期名全称 -%b 月名缩写 -%B 月名全称 -%c 日期和时间 -%d 按月计的日期(01~31) -%D 日期(mm/dd/yy) -%h 和%b选项相同 -%j 一年的第几天(001~366) -%m 月份(01~12) -%w 一个星期的第几天(0代表星期天) -%W 一年的第几个星期(00~53,星期一为第一天) -%x 显示日期的格式(mm/dd/yy) -%y 年份的最后两个数字(1999则是99) -%Y 年份(比如1970、1996等) -%C 世纪,通常为省略当前年份的后两位数字 -%U 一年中的第几周,以周日为每星期第一天 -%e 按月计的日期,添加空格,等于%_d -``` - -### 实例 - -格式化输出: - -``` -date +"%Y-%m-%d" -2009-12-07 -``` - -输出昨天日期: - -``` -date -d "1 day ago" +"%Y-%m-%d" -2012-11-19 -``` - -2秒后输出: - -``` -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.00 -``` - -apache格式转换: - -``` -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. -``` - -## mount - -用于挂载Linux系统外的文件。 - -### 补充说明 - -**mount命令** Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。 - -### 语法 - -``` -mount [-hV] -mount -a [-fFnrsvw] [-t vfstype] -mount [-fnrsvw] [-o options [,...]] device | dir -mount [-fnrsvw] [-t vfstype] [-o options] device dir -``` - -### 选项 - -``` --V:显示程序版本 --h:显示辅助讯息 --v:显示较讯息,通常和 -f 用来除错。 --a:将 /etc/fstab 中定义的所有档案系统挂上。 --F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。 --f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。 --n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。 --s-r:等于 -o ro --w:等于 -o rw --L:将含有特定标签的硬盘分割挂上。 --U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。 --t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。 --o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。 --o sync:在同步模式下执行。 --o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。 --o auto、-o noauto:打开/关闭自动挂上模式。 --o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async. --o dev、-o nodev-o exec、-o noexec允许执行档被执行。 --o suid、-o nosuid: -允许执行档在 root 权限下执行。 --o user、-o nouser:使用者可以执行 mount/umount 的动作。 --o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。 --o ro:用唯读模式挂上。 --o rw:用可读写模式挂上。 --o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。 -``` - -### 实例 - -将 `/dev/hda1` 挂在 `/mnt` 之下。 - -``` -#mount /dev/hda1 /mnt -``` - -将 `/dev/hda1` 用唯读模式挂在 `/mnt` 之下。 - -``` -#mount -o ro /dev/hda1 /mnt -``` - -将 `/tmp/image.iso` 这个光碟的 `image` 档使用 `loop` 模式挂在 `/mnt/cdrom` 之下。用这种方法可以将一般网络上可以找到的 `Linux` 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。 - -``` -#mount -o loop /tmp/image.iso /mnt/cdrom -``` - -## umount - -用于卸载已经加载的文件系统 - -### 补充说明 - -**umount命令** 用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。 - -### 语法 - -``` -umount(选项)(参数) -``` - -### 选项 - -``` --a:卸除/etc/mtab中记录的所有文件系统; --h:显示帮助; --n:卸除时不要将信息存入/etc/mtab文件中; --r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统; --t<文件系统类型>:仅卸除选项中所指定的文件系统; --v:执行时显示详细的信息; --V:显示版本信息。 -``` - -### 参数 - -文件系统:指定要卸载的文件系统或者其对应的设备文件名。 - -### 实例 - -下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息: - -通过设备名卸载 - -``` -umount -v /dev/sda1 -/dev/sda1 umounted -``` - -通过挂载点卸载 - -``` -umount -v /mnt/mymount/ -/tmp/diskboot.img umounted -``` - -如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录: - -``` -umount -v /mnt/mymount/ -umount: /mnt/mymount: device is busy -umount: /mnt/mymount: device is busy -``` - -有时,导致设备忙的原因并不好找。碰到这种情况时,可以用lsof列出已打开文件,然后搜索列表查找待卸载的挂载点: - -``` -lsof | grep mymount 查找mymount分区里打开的文件 -bash 9341 francois cwd DIR 8,1 1024 2 /mnt/mymount -``` - -从上面的输出可知,mymount分区无法卸载的原因在于,francois运行的PID为9341的bash进程。 - -对付系统文件正忙的另一种方法是执行延迟卸载: - -``` -umount -vl /mnt/mymount/ 执行延迟卸载 -``` - -延迟卸载(lazy unmount)会立即卸载目录树里的文件系统,等到设备不再繁忙时才清理所有相关资源。卸载可移动存储介质还可以用eject命令。下面这条命令会卸载cd并弹出CD: - -``` -eject /dev/cdrom 卸载并弹出CD -``` diff --git a/docs/linux/commands/系统管理/进程和作业管理.md b/docs/linux/commands/进程和作业管理.md similarity index 92% rename from docs/linux/commands/系统管理/进程和作业管理.md rename to docs/linux/commands/进程和作业管理.md index 1be9534..ee7a242 100644 --- a/docs/linux/commands/系统管理/进程和作业管理.md +++ b/docs/linux/commands/进程和作业管理.md @@ -7,37 +7,13 @@ tags: - linux - command --- + - - -- [linux 常用命令-进程和作业管理](#linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E8%BF%9B%E7%A8%8B%E5%92%8C%E4%BD%9C%E4%B8%9A%E7%AE%A1%E7%90%86) - - [ps](#ps) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [kill](#kill) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [systemctl](#systemctl) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [service](#service) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [实例](#%E5%AE%9E%E4%BE%8B) - - [crontab](#crontab) - - [补充说明](#%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E) - - [语法](#%E8%AF%AD%E6%B3%95) - - [选项](#%E9%80%89%E9%A1%B9) - - [参数](#%E5%8F%82%E6%95%B0) - - [知识扩展](#%E7%9F%A5%E8%AF%86%E6%89%A9%E5%B1%95) - - [实例](#%E5%AE%9E%E4%BE%8B) +- [ps](#ps) +- [kill](#kill) +- [systemctl](#systemctl) +- [service](#service) +- [crontab](#crontab)