diff --git a/README.md b/README.md index cb68c43..0a036f6 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Linux下有很多命令行工具供我们使用,每个工具总是提供了大 ## 写作工具 本书使用的reStructuredText标记语言,相对Markdown来说,在写书方面更有优势: -1. 使用sphnix能够自动生成目录和索引文件,方便查询和检索; +1. 使用Sphinx能够自动生成目录和索引文件,方便查询和检索; 2. 有大量漂亮的HTML书籍主题模版,可为书籍轻松换肤(类似Wordpress的网站模版); 3. 对于参考手册类书籍的编写在语法上更为便利(python官方帮助文档的使用者); diff --git a/_static/crontab_format.png b/_static/crontab_format.png new file mode 100644 index 0000000..73f7d1c Binary files /dev/null and b/_static/crontab_format.png differ diff --git a/advance/02_program_debug.rst b/advance/02_program_debug.rst index e724b80..7bb8993 100644 --- a/advance/02_program_debug.rst +++ b/advance/02_program_debug.rst @@ -38,7 +38,7 @@ pstack是一个脚本工具,可显示每个进程的栈跟踪。pstack 命令 语法:: - $pstrack + $pstack 示例:: @@ -135,7 +135,7 @@ nm用来列出目标文件的符号清单。 objdump ^^^^^^^^^^^^^^^^^^^^ -ogjdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 +objdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 :: diff --git a/base/02_file_manage.rst b/base/02_file_manage.rst index 319f7b9..71210da 100644 --- a/base/02_file_manage.rst +++ b/base/02_file_manage.rst @@ -84,11 +84,11 @@ find是实时查找,如果需要更快的查询,可试试locate;locate会为文件系统建立索引数据库,如果有文件更新,需要定期执行更新命令来更新索引库:: - $locate string + $updatedb 寻找包含有string的路径:: - $updatedb + $locate string 与find不同,locate并不是实时查找。你需要更新数据库,以获得最新的文件索引信息。 diff --git a/base/03_text_processing.rst b/base/03_text_processing.rst index 81a2424..04d625b 100644 --- a/base/03_text_processing.rst +++ b/base/03_text_processing.rst @@ -20,7 +20,7 @@ find 文件查找 正则方式查找.txt和pdf:: - find . -regex ".*\(\.txt|\.pdf\)$" + find . -regex ".*\(\.txt\|\.pdf\)$" -iregex: 忽略大小写的正则 否定参数 ,查找所有非txt文本:: @@ -66,7 +66,7 @@ file命令可以检查文件具体类型(二进制或文本):: find . -atime -7 -type f -print 查询7天前被访问过的所有文件:: - find . -atime +7 type f -print + find . -atime +7 -type f -print - 按大小搜索: w字 k M G @@ -268,7 +268,7 @@ cut 按列切分文本 - -d 指定定界符 :: - cat -f2 -d";" filename +   cut -f2 -d";" filename - cut 取的范围 * N- 第N个字段到结尾 * -M 第1个字段为M @@ -348,7 +348,7 @@ sed 文本替换利器 已匹配的字符串通过标记&来引用. :: - echo this is en example | sed 's/\w+/[&]/g' + echo this is en example | sed 's/\w\+/[&]/g' $>[this] [is] [en] [example] diff --git a/base/07_network.rst b/base/07_network.rst index bdbe21d..18bd08a 100644 --- a/base/07_network.rst +++ b/base/07_network.rst @@ -91,17 +91,17 @@ DNS查询,寻找域名domain对应的IP:: ftp sftp lftp ssh -------------------- -SSH登陆:: +SSH登录:: $ssh ID@host -ssh登陆远程服务器host,ID为用户名。 +ssh登录远程服务器host,ID为用户名。 ftp/sftp文件传输:: $sftp ID@host -登陆服务器host,ID为用户名。sftp登陆后,可以使用下面的命令进一步操作: +登录服务器host,ID为用户名。sftp登录后,可以使用下面的命令进一步操作: - get filename # 下载文件 - put filename # 上传文件 diff --git a/base/08_user_manage.rst b/base/08_user_manage.rst index a876559..e32e7ef 100644 --- a/base/08_user_manage.rst +++ b/base/08_user_manage.rst @@ -87,7 +87,7 @@ 字母方式:: - $chown userMark(+|-)PermissionsMark + $chmod userMark(+|-)PermissionsMark userMark取值: - u:用户 @@ -164,6 +164,7 @@ bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non- . /opt/app/tuxapp/openav/config/setenv.prod.sh.linux export PS1='$PWD#' +执行 source ~/.bashrc 使.bashrc中的修改生效 通过上述设置,我们进入log目录就只需要输入cd $log即可; 总结 diff --git a/crontab.md b/crontab.md index 7488187..db2757a 100644 --- a/crontab.md +++ b/crontab.md @@ -128,7 +128,7 @@ $ crontab -l ### 实例12:晚上11点到早上7点之间,每隔一小时重启smb 命令: -* 23-7/1 * * * /etc/init.d/smb restart +0 23-7 * * * /etc/init.d/smb restart ### 实例13:每月的4号与每周一到周三的11点重启smb 命令: diff --git a/crontab.rst b/crontab.rst index a2238f3..3f138d9 100644 --- a/crontab.rst +++ b/crontab.rst @@ -154,7 +154,7 @@ $ crontab 实例12:晚上11点到早上7点之间,每隔一小时重启smb ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 命令: -* 23-7/1 * * * /etc/init.d/smb restart +0 23-7 * * * /etc/init.d/smb restart 实例13:每月的4号与每周一到周三的11点重启smb ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tool/crontab.rst b/tool/crontab.rst index d77434a..234a37d 100644 --- a/tool/crontab.rst +++ b/tool/crontab.rst @@ -7,7 +7,9 @@ crontab 定时任务 命令格式 -------------- -crontab [-u user] [ -e | -l | -r ] + crontab [-u user] file + + crontab [-u user] { -e | -l | -r } 命令参数 ----------- @@ -18,21 +20,25 @@ crontab [-u user] [ -e | -l | -r ] - -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。 - -i:在删除用户的crontab文件时给确认提示。 -crontab的文件格式 +crontab 的文件格式 ------------------- 分 时 日 月 星期 要运行的命令 -- 第1列分钟1~59 -- 第2列小时1~23(0表示子夜) +- 第1列分钟0~59 +- 第2列小时0~23(0表示子夜) - 第3列日1~31 - 第4列月1~12 -- 第5列星期0~6(0表示星期天) +- 第5列星期0~7(0和7表示星期天) - 第6列要运行的命令 +为了便于大家记忆,可以看下面这张图: + +.. image:: ../_static/crontab_format.png + :alt: crontab 文件格式 常用方法 ----------------- -创建一个新的crontab文件 +创建一个新的 crontab 文件 ~~~~~~~~~~~~~~~~~~~~~~~~~ 向cron进程提交一个crontab文件之前,首先要设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑$HOME目录下的. profile文件,在其中加入这样一行:: @@ -58,7 +64,7 @@ crontab的文件格式 使用-l参数列出crontab文件:: $ crontab -l - 0,15,30,45,18-06 * * * /bin/echo `date` > dev/tty1 + 0,15,30,45 18-06 * * * /bin/echo `date` > dev/tty1 可以使用这种方法在$HOME目录中对crontab文件做一备份:: @@ -155,13 +161,13 @@ crontab的文件格式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: - * */1 * * * /etc/init.d/smb restart + 0 */1 * * * /etc/init.d/smb restart 实例12:晚上11点到早上7点之间,每隔一小时重启smb ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: - * 23-7/1 * * * /etc/init.d/smb restart + 0 23-7 * * * /etc/init.d/smb restart 使用注意事项 ----------------------- @@ -181,7 +187,7 @@ crontab的文件格式 source /etc/profile export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf /usr/local/jboss-4.0.5/bin/run.sh -c mev & -3)当手动执行脚本OK,但是crontab死活不执行时,很可能是环境变量惹的祸,可尝试在crontab中直接引入环境变量解决问题。如:: +3. 当手动执行脚本OK,但是crontab死活不执行时,很可能是环境变量惹的祸,可尝试在crontab中直接引入环境变量解决问题。如:: 0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh diff --git a/tool/iostat.rst b/tool/iostat.rst index 87fe5cc..0036f72 100644 --- a/tool/iostat.rst +++ b/tool/iostat.rst @@ -72,7 +72,7 @@ disk属性值说明: * svctm: 平均每次设备I/O操作的服务时间 (毫秒)。 * %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比 -备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。 +备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有大量io在等待。 实例2:定时显示所有信息 diff --git a/tool/lsof.rst b/tool/lsof.rst index a88c410..23b4ccb 100644 --- a/tool/lsof.rst +++ b/tool/lsof.rst @@ -76,8 +76,8 @@ lsof输出各列信息的意义如下: (12)rtd:root directory; (13)tr:kernel trace file (OpenBSD); (14)v86 VP/ix mapped file; - (15)0:表示标准输出 - (16)1:表示标准输入 + (15)0:表示标准输入 + (16)1:表示标准输出 (17)2:表示标准错误 一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等 (1)u:表示该文件被打开并处于读取/写入模式 diff --git a/tool/ps.rst b/tool/ps.rst index e0a4f41..0f28642 100644 --- a/tool/ps.rst +++ b/tool/ps.rst @@ -16,7 +16,7 @@ linux上进程有5种状态: 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) -5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) +5. 停止(进程收到SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU信号后停止运行运行) ps工具标识进程的5种状态码: diff --git a/tool/top.rst b/tool/top.rst index 5ec2648..a0ff7d8 100644 --- a/tool/top.rst +++ b/tool/top.rst @@ -86,13 +86,13 @@ top命令交互操作指令 * m:显示或隐藏内存状态信息 * l:显示或隐藏uptime信息 * f:增加或减少进程显示标志 - * S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+ + * S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的TIME+ * P:按%CPU使用率排行 - * T:按MITE+排行 + * T:按TIME+排行 * M:按%MEM排行 * u:指定显示用户进程 * r:修改进程renice值 - * kkill:进程 + * k:kill 进程 * i:只显示正在运行的进程 * W:保存对top的设置到文件^/.toprc,下次启动将自动调用toprc文件的设置。 * h:帮助命令。