摘要

本博文主要是介绍的操作系统中的实战,帮助大家在操作服务器做一个参考。

一、mount挂载Windows共享文件夹

现实中会有这样的场景 , 开发人员在 Windows 上面写代码 , 然后放到 Linux 进行编译 , 达到这个目的我们可以在 Linux 上使用 mount 命令挂载 Windows 共享文件夹 , 就像将 Windows 里面的共享目录当成一个U盘插到 Linux主机上面 , 然后 Linux 可以直接访问代码进行编译编译 ; 具体操作步骤如下 :

1.1 先在 Windows 下面共享需要挂载的目录

右键需要共享的文件夹 , 选择共享 , 然后默认设置就可以,然后在其他的机器测试是否能正常访问 , 在其他机器资源管理器里面输入 \\192.168.0.102\Share , 地址格式是 \\你的IP\你的共享文件夹

出现无法访问或者指定的密码不正确时 , 可参考如下设置 :

  • 修改网络安全设置 : 开始 -> 运行 gpedit.msc , 打开组策略 -> 计算机配置 -> Windows设置 -> 安全设置 -> 本地策略 -> 安全选项 -> 选择 “网络安全 : LAN 管理器身份验证级别” , 双击打开 , 设置成“发送 LM 和 NTLM 响应” 。
  • 修改网络访问模型 : 开始 -> 运行 -> gpedit.msc -> 计算机配置 -> Windows设置 -> 安全设置 -> 本地策略 -> 安全选项 -> 选择 “网络访问:本地帐户的共享和安全模型” , 修改用经典模式 。

1.2 在linux下面创建一个需要挂载到的目录

mount 命令同时要求在sudo su 下才能进行我创建的目录是 :/xjl/share/data利用 mount 命令进行挂载:# mount -t cifs -o username=Bob,password=123456 //192.168.0.102/Share /xjl/share/data/参数说明 : username , Window 系统登录用户名 ; password : Window 系统登录密码 ; //192.168.0.102/Share : 设置Window共享目录的路径 ; /xjl/share/data/ : 挂载到 Linux 下的那个目录。挂载完成后我们就可以在 /xjl/share/data/ 目录里面看到 Windows 共享文件夹里面的文件。

1.3 查挂载在状态

或者使用# mount 也可进行查看。

# df -hFilesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00   38G  4.3G   34G  12% /
devtmpfs                         235M     0  235M   0% /dev
tmpfs                            245M     0  245M   0% /dev/shm
tmpfs                            245M  4.3M  241M   2% /run
tmpfs                            245M     0  245M   0% /sys/fs/cgroup
/dev/sda2                       1014M  131M  884M  13% /boot
tmpfs                             49M     0   49M   0% /run/user/0
//192.168.0.102/Share            245G   54G  191G  22% /usr/local/bin/code

1.4 卸载mount文件

# umount /xjl/share/dataumount 时提示错误 target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) , 你可以先切换到别的目录再试一次 , 原因也可能是其他进程可能在使用目录 , 可以先关闭使用该目录的进程 , 然后再 umount , 命令如下 (使用 fuser 需安装 psmisc # yum install psmisc) :再次使用的卸载的命令# fuser -m /usr/local/bin/code
/usr/local/bin/code:  2806c# ps aux | grep 2806
root      2806  0.0  0.5 116040  2836 pts/0    Ss   11:31   0:00 -bash
root      2925  0.0  0.1 112648   960 pts/0    S+   14:36   0:00 grep --color=auto 2806# kill -9 2806# umount /usr/local/bin/code

二、文件及目录管理

2.1 创建和删除

  • 创建:mkdir
  • 删除:rm
  • 删除非空目录:rm -rf file目录
  • 删除日志 rm *log (等价: $find ./ -name “*log” -exec rm {} ;)
  • 移动:mv
  • 复制:cp (复制目录:cp -r )
查看当前目录下文件个数:$find ./ | wc -l复制目录:$cp -r source_dir  dest_dir

2.2 目录的切换

  • 找到文件/目录位置:cd
  • 切换到上一个工作目录: cd -
  • 切换到home目录: cd or cd ~
  • 显示当前路径: pwd
  • 更改当前工作路径为path: $cd path

2.3 查找目录以及文件

搜寻文件或目录:$find ./ -name "core*" | xargs file查找目标文件夹中是否有obj文件:$find ./ -name '*.o'递归当前目录及子目录删除所有.o文件:$find ./ -name "*.o" -exec rm {} \;find是实时查找,如果需要更快的查询,可试试locate;locate会为文件系统建立索引数据库,如果有文件更新,需要定期执行更新命令来更新索引库:$locate string寻找包含有string的路径:$updatedb与find不同,locate并不是实时查找。你需要更新数据库,以获得最新的文件索引信息。

2.4 查看文件内容

查看文件:cat vi head tail more显示时同时显示行号:$cat -n按页显示列表内容:$ls -al | more只看前10行:$head - 10 **显示文件第一行:$head -1 filename显示文件倒数第五行:$tail -5 filename查看两个文件间的差别:$diff file1 file2动态显示文本最新信息:$tail -f crawler.log

2.5 查询文件内容

使用egrep查询文件内容:egrep '03.1\/CO\/AE' TSF_STAT_111130.log.012egrep 'A_LMCA777:C' TSF_STAT_111130.log.035 > co.out2

2.6 文件目录权限的修改

  • 改变文件的拥有者 chown
  • 改变文件读、写、执行等属性 chmod
  • 递归子目录修改: chown -R tuxapp source/
  • 增加脚本可执行权限: chmod a+x myscript

2.7 给文件增加别名

创建符号链接/硬链接:ln cc ccAgain :硬连接;删除一个,将仍能找到;ln -s cc ccTo :符号链接(软链接);删除源,另一个无法使用;(后面一个ccTo 为新建的文件)

2.8 设置环境变量

修改文件vim /etc/profile安装的软件路径一般需要加入到path中:PATH=$APPDIR:/opt/app/soft/bin:$PATH:/usr/local/bin:$TUXDIR/bin:$ORACLE_HOME/bin;export PATH

2.9 快捷键的输入与删除

Ctl-U   删除光标到行首的所有字符,在某些设置下,删除全行Ctl-W   删除当前光标到前边的最近一个空格之间的字符Ctl-H   backspace,删除光标前边的字符Ctl-R   匹配最相近的一个文件,然后输出

三、文本处理

3.1 find文件查找

查找txt和pdf文件:find . \( -name "*.txt" -o -name "*.pdf" \) -print正则方式查找.txt和pdf:find . -regex  ".*\(\.txt|\.pdf\)$"-iregex: 忽略大小写的正则否定参数 ,查找所有非txt文本:find . ! -name "*.txt" -print指定搜索深度,打印出当前目录的文件(深度为1):find . -maxdepth 1 -type f
按类型搜索find . -type d -print  //只列出所有目录按时间搜索
-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)最近第7天被访问过的所有文件:find . -atime 7 -type f -print最近7天内被访问过的所有文件:find . -atime -7 -type f -print查询7天前被访问过的所有文件:find . -atime +7 type f -print按大小搜索:w字 k M G 寻找大于2k的文件:find . -type f -size +2k按权限查找:find . -type f -perm 644 -print //找具有可执行权限的所有文件按用户查找:find . -type f -user weber -print// 找用户weber所拥有的文件删除当前目录下所有的swp文件:find . -type f -name "*.swp" -delete

3.2 grep文件搜索

grep match_patten file // 默认访问匹配行常用参数-o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行-c 统计文件中包含文本的次数: grep -c “text” filename-n 打印匹配的行号-i 搜索时忽略大小写-l 只打印文件名在多级目录中对文本递归搜索(程序员搜代码的最爱):grep "class" . -R -n匹配多个模式:grep -e "class" -e "vitural" filegrep输出以0作为结尾符的文件名(-z):grep "test" file* -lZ| xargs -0 rm综合应用:将日志中的所有带where条件的sql查找查找出来:cat LOG.* | tr a-z A-Z | grep "FROM " | grep "WHERE" > b

3.3 sort 排序

字段说明-n 按数字进行排序 VS -d 按字典序进行排序-r 逆序排序-k N 指定按第N列排序示例:sort -nrk 1 data.txtsort -bd data // 忽略像空格之类的前导空白字符

3.4 消除重复行

消除重复行:sort unsort.txt | uniq统计各行在文件中出现的次数sort unsort.txt | uniq -c找出重复行sort unsort.txt | uniq -d

3.5 paste按照列拼接文本

将两个文本按列拼接到一起;cat file1
1
2cat file2
colin
bookpaste file1 file21 colin
2 book
默认的定界符是制表符,可以用-d指明定界符:paste file1 file2 -d ","
1,colin
2,book

3.6 wc统计行和字符的工具

$wc -l file // 统计行数$wc -w file // 统计单词数$wc -c file // 统计字符数

3.7 sed文本替换

首处替换sed 's/text/replace_text/' file   //替换每一行的第一处匹配的text全局替换sed 's/text/replace_text/g' file默认替换后,输出替换后的内容,如果需要直接替换原文件,使用-i:sed -i 's/text/repalce_text/g' file移除空白行sed '/^$/d' file变量转换已匹配的字符串通过标记&来引用.echo this is en example | sed 's/\w+/[&]/g'$>[this]  [is] [en] [example]子串匹配标记第一个匹配的括号内容使用标记 1 来引用sed 's/hello\([0-9]\)/\1/'双引号求值sed通常用单引号来引用;也可使用双引号,使用双引号后,双引号会对表达式求值:sed 's/$var/HLLOE/'当使用双引号时,我们可以在sed样式和替换字符串中指定变量;p=patten
r=replaced
echo "line con a patten" | sed "s/$p/$r/g"
$>line con a replaced其它示例字符串插入字符:将文本中每行内容(ABCDEF) 转换为 ABC/DEF:sed 's/^.\{3\}/&\//g' file

四、磁盘管理

4.1 查询磁盘空间

df -h
---------------------------------------
$df -h
/opt/app/todeav/config#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
2.0G  711M  1.2G  38% /
/dev/mapper/vg1-lv2    20G  3.8G   15G  21% /opt/applog
/dev/mapper/vg1-lv1    20G   13G  5.6G  70% /opt/app查看当前目录所占空间大小:du -sh-h 人性化显示-s 递归整个目录的大小$du -sh
653M查看当前目录下所有子文件夹排序后的大小:for i in `ls`; do du -sh $i; done | sort
或者:
du -sh `ls` | sort

4.2 打包和压缩

打包是将多个文件归并到一个文件:tar -cvf etc.tar /etc <==仅打包,不压缩!-c :打包选项-v :显示打包进度-f :使用档案文件注:有的系统中指定参数时不需要在前面加上-,直接使用tar xvf示例:用tar实现文件夹同步,排除部分文件不同步:tar --exclude '*.svn' -cvf - /path/to/source | ( cd /path/to/target; tar -xf -)压缩$gzip demo.txt生成 demo.txt.gz解包tar -xvf demo.tar-x 解包选项解压后缀为 .tar.gz的文件 1. 先解压缩,生成**.tar:$gunzip    demo.tar.gz
解包:$tar -xvf  demo.tar
$bzip2 -d demo.tar.bz2bz2解压:tar jxvf demo.tar.bz2如果tar 不支持j,则同样需要分两步来解包解压缩,使用bzip2来解压,再使用tar解包:bzip2 -d  demo.tar.bz2-d decompose,解压缩tar -xvf  demo.tartar解压参数说明:-z 解压gz文件-j 解压bz2文件-J 解压xz文件
  • 查看磁盘空间 df -h
  • 查看目录大小 du -sh
  • 打包 tar -cvf
  • 解包 tar -xvf
  • 压缩 gzip
  • 解压缩 gunzip bzip

五、进程管理

5.1 查询进程

查询正在运行的进程信息$ps -efeg:查询归属于用户colin115的进程$ps -ef | grep colin115$ps -lu colin115查询进程ID(适合只记得部分进程字段)$pgrep 查找进程eg:查询进程名中含有re的进程[/home/weber#]pgrep -l re2 kthreadd
28 ecryptfs-kthrea
29515 redis-server以完整的格式显示所有的进程$ps -ajx显示进程信息,并实时更新$top查看端口占用的进程状态:lsof -i:3306查看用户username的进程所打开的文件$lsof -u username查询init进程当前打开的文件$lsof -c init查询指定的进程ID(23295)打开的文件:$lsof -p 23295查询指定目录下被进程开启的文件(使用+D 递归目录):$lsof +d mydir1/

5.2 终止进程

杀死指定PID的进程 (PID为Process ID)$kill PID杀死相关进程kill -9 3434杀死job工作 (job为job number)$kill %job

5.3 进程监控

查看系统中使用CPU、使用内存最多的进程;$top

5.4 分析线程栈

使用命令pmap,来输出进程内存的状况,可以用来分析线程堆栈;$pmap PID[/home/weber#]ps -fe| grep redisweber    13508 13070  0 08:14 pts/0    00:00:00 grep --color=auto redis
weber    29515     1  0  2013 ?        02:55:59 ./redis-server redis.conf[/home/weber#]pmap 2951529515:   ./redis-server redis.conf
08048000    768K r-x--  /home/weber/soft/redis-2.6.16/src/redis-server
08108000      4K r----  /home/weber/soft/redis-2.6.16/src/redis-server
08109000     12K rw---  /home/weber/soft/redis-2.6.16/src/redis-server
将用户colin115下的所有进程名以av_开头的进程终止:ps -u colin115 |  awk '/av_/ {print "kill -9 " $1}' | sh将用户colin115下所有进程名中包含HOST的进程终止:ps -fe| grep colin115|grep HOST |awk '{print $2}' | xargs kill -9;

六、性能监控

6.1 监控CPU

查看CPU使用率$sar -u$sar -u 1 2[/home/weber#]sar -u 1 2Linux 2.6.35-22-generic-pae (MyVPS)     06/28/2014      _i686_  (1 CPU)09:03:59 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:04:00 AM     all      0.00      0.00      0.50      0.00      0.00     99.50
09:04:01 AM     all      0.00      0.00      0.00      0.00      0.00    100.00

6.2 查询内存

查看内存使用状况 sar指定-r之后,可查看内存使用状况;$sar -r 1 209:08:48 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact
09:08:49 AM     17888    359784     95.26     37796     73272    507004     65.42    137400    150764
09:08:50 AM     17888    359784     95.26     37796     73272    507004     65.42    137400    150764
Average:        17888    359784     95.26     37796     73272    507004     65.42    137400    150764查看内存使用量$free -m

6.3 硬盘查询

查看磁盘空间利用情况$df -h查询当前目录下空间使用情况du -sh  -h是人性化显示 s是递归整个目录的大小查看该目录下所有文件夹的排序后的大小for i in `ls`; do du -sh $i; done | sort 或者 du -sh `ls`

七、网络管理

7.1 查询网络服务和端口

列出所有端口 (包括监听和未监听的):netstat -a列出所有 tcp 端口:netstat -at列出所有有监听的服务状态:netstat -l使用netstat工具查询端口:$netstat -antp | grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      25501/redis-server$ps 25501PID TTY      STAT   TIME COMMAND
25501 ?        Ssl   28:21 ./redis-server ./redis.conf

7.2 网络路由管理

查看路由状态:$route -n发送ping包到地址IP:$ping IP探测前往地址IP的路由路径:$traceroute IPDNS查询,寻找域名domain对应的IP:$host domain反向DNS查询:$host IP

7.3 文件的下载

wget url常用选项:–limit-rate :下载限速-o:指定日志文件;输出都写入日志;-c:断点续传

7.4 服务器登入

SSH登陆:$ssh ID@hostssh登陆远程服务器host,ID为用户名。ftp/sftp文件传输:$sftp ID@host登陆服务器host,ID为用户名。sftp登陆后,可以使用下面的命令进一步操作:get filename # 下载文件
put filename # 上传文件ls # 列出host上当前路径的所有文件
cd # 在host上更改当前路径
lls # 列出本地主机上当前路径的所有文件
lcd # 在本地主机更改当前路径
lftp同步文件夹(类似rsync工具):lftp -u user:pass hostlftp user@host:~> mirror -n

7.5 网络复制

将本地localpath指向的文件上传到远程主机的path路径:$scp localpath ID@host:path以ssh协议,遍历下载path路径下的整个文件系统,到本地的localpath:$scp -r ID@site:path localpath

八、用户权限管理

8.1 用户的增删

添加用户
$useradd -m username该命令为用户创建相应的帐号和用户目录/home/username;用户添加之后,设置密码:密码以交互方式创建:$passwd username删除用户$userdel -r username不带选项使用 userdel,只会删除用户。用户的家目录将仍会在/home目录下。要完全的删除用户信息,使用-r选项;帐号切换 登录帐号为userA用户状态下,切换到userB用户帐号工作:$su userB进入交互模型,输入密码授权进入;

8.2 用户分组

将用户加入到组默认情况下,添加用户操作也会相应的增加一个同名的组,用户属于同名组; 查看当前用户所属的组:$groups一个用户可以属于多个组,将用户加入到组:$usermod -G groupNmame username变更用户所属的根组(将用加入到新的组,并从原有的组中除去):$usermod -g groupName username查看所有用户及权限:$more /etc/passwd查看所有的用户组及权限:$more /etc/group

8.3 用户权限管理

使用chmod命令更改文件的读写权限,更改读写权限有两种方法,一种是字母方式,一种是数字方式字母方式:$chmod userMark(+|-)PermissionsMarkuserMark取值:u:用户g:组o:其它用户a:所有用户
PermissionsMark取值:r:读w:写x:执行
例如:$chmod a+x main         对所有用户给文件main增加可执行权限
$chmod g+w blogs        对组用户给文件blogs增加可写权限数字方式:
数字方式直接设置所有权限,相比字母方式,更加简洁方便;使用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。例如:$chmod 740 main     将main的用户权限设置为rwxr-----更改文件或目录的拥有者$chown username dirOrFile使用-R选项递归更改该目下所有文件的拥有者:$chown -R weber server/

九、Linux工具的使用

9.1 查询程序依赖的库

查看test程序运行所依赖的库:/opt/app/todeav1/test$ldd testlibstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003995800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003995400000)第一列:程序需要依赖什么库
第二列: 系统提供的与程序需要的库所对应的库
第三列:库加载的开始地址

9.2 lsof文件管理

lsof打开的文件可以是:

  1. 普通文件
  2. 目录
  3. 网络文件系统的文件
  4. 字符或设备文件
  5. (函数)共享库
  6. 管道,命名管道
  7. 符号链接
  8. 网络文件(例如:NFS file、网络socket,unix域名socket)
  9. 还有其它类型的文件,等等
$lsof| more
COMMAND     PID      USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
init          1      root  cwd       DIR              253,0     4096          2 /
init          1      root  rtd       DIR              253,0     4096          2 /
init          1      root  txt       REG              253,0   150352    1310795 /sbin/init
init          1      root  mem       REG              253,0    65928    5505054 /lib64/libnss_files-2.12.so
init          1      root  mem       REG              253,0  1918016    5521405 /lib64/libc-2.12.so
init          1      root  mem       REG              253,0    93224    5521440 /lib64/libgcc_s-4.4.6-20120305.so.1
init          1      root  mem       REG              253,0    47064    5521407 /lib64/librt-2.12.so
init          1      root  mem       REG              253,0   145720    5521406 /lib64/libpthread-2.12.so说明:lsof输出各列信息的意义如下:COMMAND:进程的名称PID:进程标识符PPID:父进程标识符(需要指定-R参数)USER:进程所有者PGID:进程所属组FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等:
实例2:查找某个文件相关的进程$lsof /bin/bashCOMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
mysqld_sa  2169 root txt    REG  253,0   938736 4587562 /bin/bash
ksmtuned   2334 root txt    REG  253,0   938736 4587562 /bin/bash
bash      20121 root txt    REG  253,0   938736 4587562 /bin/bash实例3:列出某个用户打开的文件信息$lsof -u username-u 选项,u是user的缩写实例4:列出某个程序进程所打开的文件信息$lsof -c mysql-c 选项将会列出所有以mysql这个进程开头的程序的文件,其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符;实例5:列出某个用户以及某个进程所打开的文件信息$lsof  -u test -c mysql实例6:通过某个进程号显示该进程打开的文件$lsof -p 11968实例7:列出所有的网络连接$lsof -i实例8:列出所有tcp 网络连接信息$lsof -i tcp$lsof -n -i tcp
COMMAND     PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
svnserve  11552 weber    3u  IPv4 3799399      0t0  TCP *:svn (LISTEN)
redis-ser 25501 weber    4u  IPv4  113150      0t0  TCP 127.0.0.1:6379 (LISTEN)实例9:列出谁在使用某个端口$lsof -i :3306实例10:列出某个用户的所有活跃的网络端口$lsof -a -u test -i实例11:根据文件描述列出对应的文件信息$lsof -d description(like 2)示例:$lsof -d 3 | grep PARSER1
tail      6499 tde    3r   REG    253,3   4514722     417798 /opt/applog/open/log/HOSTPARSER1_ERROR_141217.log.001说明:0表示标准输入,1表示标准输出,2表示标准错误,从而可知:所以大多数应用程序所打开的文件的 FD 都是从3 开始实例12:列出被进程号为1234的进程所打开的所有IPV4 network files$lsof -i 4 -a -p 1234实例13:列出目前连接主机nf5260i5-td上端口为:20,21,80相关的所有文件信息,且每隔3秒重复执行lsof -i @nf5260i5-td:20,21,80 -r 3

9.3 PS进程查看器

实例1:显示所有进程信息[root@localhost test6]# ps -APID TTY          TIME CMD
1 ?        00:00:00 init
2 ?        00:00:01 migration/0
3 ?        00:00:00 ksoftirqd/0
4 ?        00:00:01 migration/1
5 ?        00:00:00 ksoftirqd/1
6 ?        00:29:57 events/0
7 ?        00:00:00 events/1
8 ?        00:00:00 khelper
49 ?        00:00:00 kthread
54 ?        00:00:00 kblockd/0
55 ?        00:00:00 kblockd/1
56 ?        00:00:00 kacpid
217 ?        00:00:00 cqueue/0
……省略部分结果实例2:显示指定用户信息[root@localhost test6]# ps -u rootPID TTY          TIME CMD
1 ?        00:00:00 init
2 ?        00:00:01 migration/0
3 ?        00:00:00 ksoftirqd/0
4 ?        00:00:01 migration/1
5 ?        00:00:00 ksoftirqd/1
6 ?        00:29:57 events/0
7 ?        00:00:00 events/1
8 ?        00:00:00 khelper
49 ?        00:00:00 kthread
54 ?        00:00:00 kblockd/0
55 ?        00:00:00 kblockd/1
56 ?        00:00:00 kacpid
……省略部分结果实例3:显示所有进程信息,连同命令行[root@localhost test6]# ps -efUID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Nov02 ?        00:00:00 init [3]
root         2     1  0 Nov02 ?        00:00:01 [migration/0]
root         3     1  0 Nov02 ?        00:00:00 [ksoftirqd/0]
root         4     1  0 Nov02 ?        00:00:01 [migration/1]
root         5     1  0 Nov02 ?        00:00:00 [ksoftirqd/1]
root         6     1  0 Nov02 ?        00:29:57 [events/0]
root         7     1  0 Nov02 ?        00:00:00 [events/1]
root         8     1  0 Nov02 ?        00:00:00 [khelper]
root        49     1  0 Nov02 ?        00:00:00 [kthread]
root        54    49  0 Nov02 ?        00:00:00 [kblockd/0]
root        55    49  0 Nov02 ?        00:00:00 [kblockd/1]
root        56    49  0 Nov02 ?        00:00:00 [kacpid]实例4: ps 与grep 组合使用,查找特定进程[root@localhost test6]# ps -ef|grep sshroot      2720     1  0 Nov02 ?        00:00:00 /usr/sbin/sshd
root     17394  2720  0 14:58 ?        00:00:00 sshd: root@pts/0
root     17465 17398  0 15:57 pts/0    00:00:00 grep ssh实例5:将与这次登入的 PID 与相关信息列示出来[root@localhost test6]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 17398 17394  0  75   0 - 16543 wait   pts/0    00:00:00 bash
4 R     0 17469 17398  0  77   0 - 15877 -      pts/0    00:00:00 ps实例6:列出目前所有的正在内存中的程序[root@localhost test6]# ps auxUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  10368   676 ?        Ss   Nov02   0:00 init [3]
root         2  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/0]
root         3  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/1]
root         5  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/1]
root         6  0.0  0.0      0     0 ?        S<   Nov02  29:57 [events/0]
root         7  0.0  0.0      0     0 ?        S<   Nov02   0:00 [events/1]
root         8  0.0  0.0      0     0 ?        S<   Nov02   0:00 [khelper]
root        49  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kthread]
root        54  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kblockd/0]
root        55  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kblockd/1]
root        56  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kacpid]

9.4 top linux中的任务管理器

实例1:多核CPU监控在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况;[rdtfr@bl685cb4-t ^]$ toptop - 09:10:44 up 20 days, 16:51,  4 users,  load average: 3.82, 4.40, 4.40
Tasks: 1201 total,  10 running, 1189 sleeping,   0 stopped,   2 zombie
Cpu0  :  1.3%us,  2.3%sy,  0.0%ni, 96.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  1.3%us,  2.6%sy,  0.0%ni, 96.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  1.0%us,  2.0%sy,  0.0%ni, 92.5%id,  0.0%wa,  0.0%hi,  4.6%si,  0.0%st
Cpu3  :  3.9%us,  7.8%sy,  0.0%ni, 83.2%id,  0.0%wa,  0.0%hi,  5.2%si,  0.0%st
Cpu4  :  4.2%us, 10.4%sy,  0.0%ni, 63.8%id,  0.0%wa,  0.0%hi, 21.5%si,  0.0%st
Cpu5  :  6.8%us, 12.7%sy,  0.0%ni, 80.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  2.9%us,  7.2%sy,  0.0%ni, 85.3%id,  0.0%wa,  0.0%hi,  4.6%si,  0.0%st
Cpu7  :  6.2%us, 13.0%sy,  0.0%ni, 75.3%id,  0.0%wa,  0.0%hi,  5.5%si,  0.0%st
Mem:  32943888k total, 32834216k used,   109672k free,   642704k buffers
Swap: 35651576k total,  5761928k used, 29889648k free, 16611500k cached实例2:高亮显示当前运行进程在top基本视图中,按键盘“b”(打开/关闭加亮效果);实例3:显示完整的程序命令命令:top -c[rdtfr@bl685cb4-t ^]$ top -ctop - 09:14:35 up 20 days, 16:55,  4 users,  load average: 5.77, 5.01, 4.64
Tasks: 1200 total,   5 running, 1192 sleeping,   0 stopped,   3 zombie
Cpu(s):  4.4%us,  6.0%sy,  0.0%ni, 83.8%id,  0.2%wa,  0.0%hi,  5.5%si,  0.0%st
Mem:  32943888k total, 32842896k used,   100992k free,   591484k buffers
Swap: 35651576k total,  5761808k used, 29889768k free, 16918824k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
2013 apache    18   0  403m  88m 5304 S 25.0  0.3   6:37.44 /usr/sbin/httpd
18335 pubtest   22   0 65576  996  728 R  7.8  0.0   0:00.24 netstat -naltp
16499 rdtfare   15   0 13672 2080  824 R  2.6  0.0   0:00.38 top -c
29684 rdtfare   15   0 1164m 837m  14m S  2.3  2.6 148:47.54 ./autodata data1.txt
12976 pubtest   18   0  238m 9000 1932 S  1.6  0.0 439:28.44 tscagent -s TOEV_P实例4:显示指定的进程信息命令:top -p pidid/opt/app/tdv1/config#top -p 17265
top - 09:17:34 up 455 days, 17:55,  2 users,  load average: 3.76, 4.56, 4.46
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.8%us,  1.9%sy,  0.0%ni, 89.2%id,  0.0%wa,  0.1%hi,  1.0%si,  0.0%st
Mem:   8175452k total,  8103988k used,    71464k free,   268716k buffers
Swap:  6881272k total,  4275424k used,  2605848k free,  6338184k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17265 tdv1      15   0 56504  828  632 S  0.0  0.0 195:53.25 redis-server指定进程信息有多个时,需要结合其它工具将回车替换为,(-p 支持pid,pid,pid语法)命令:top -p pgrep MULTI_PROCESS | tr “\n” ”,” | sed ‘s/,$//’/opt/app/tdv1$top -p `pgrep java | tr "\\n" "," | sed 's/,$//'`
top - 14:05:31 up 53 days,  2:43,  9 users,  load average: 0.29, 0.34, 0.22
Tasks:   3 total,   0 running,   3 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.9%us,  8.2%sy,  0.0%ni, 86.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  66082088k total, 29512860k used, 36569228k free,   756352k buffers
Swap: 32767992k total,  1019900k used, 31748092k free, 15710284k cachedPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                          27855 rdtfare   20   0 4454m 1.3g 5300 S  0.7  2.0 338:31.37 java2034 jenkins   20   0 18.3g 5.2g 5284 S  0.3  8.2  56:02.38 java                                             12156 rdtfare   20   0 4196m 1.2g  12m S  0.3  2.0  86:34.62 java8.3. 更强大的工具htop 是一个 Linux 下的交互式的进程浏览器,可以用来替换Linux下的top命令。与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。与top相比,htop有以下优点:- 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。- 在启动上,比top 更快。- 杀进程时不需要输入进程号。- htop 支持鼠标操作。

9.5 free 查询可用内存

free工具用来查看系统可用内存:/opt/app/tdev1$freetotal       used       free     shared    buffers     cached
Mem:       8175320    6159248    2016072          0     310208    5243680
-/+ buffers/cache:     605360    7569960
Swap:      6881272      16196    6865076

9.6 vmstat 监视内存使用情况

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU活动。

vmstat [-V] [-n] [delay [count]]-V表示打印出版本信息;-n表示在周期性循环输出时,输出的头部信息仅显示一次;delay是两次输出之间的延迟时间;count是指按照这个时间间隔统计的次数。/root$vmstat 5 5procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
6  0      0 27900472 204216 28188356    0    0     0     9    1    2 11 14 75  0  0
9  0      0 27900380 204228 28188360    0    0     0    13 33312 126221 22 20 58  0  0
2  0      0 27900340 204240 28188364    0    0     0    10 32755 125566 22 20 58  0  0
Procs(进程):r: 运行队列中进程数量b: 等待IO的进程数量Memory(内存):swpd: 使用虚拟内存大小free: 可用内存大小buff: 用作缓冲的内存大小cache: 用作缓存的内存大小Swap:si: 每秒从交换区写到内存的大小so: 每秒写入交换区的内存大小IO:(现在的Linux版本块的大小为1024bytes)bi: 每秒读取的块数bo: 每秒写入的块数system:in: 每秒中断数,包括时钟中断cs: 每秒上下文切换数CPU(以百分比表示)us: 用户进程执行时间(user time)sy: 系统进程执行时间(system time)id: 空闲时间(包括IO等待时间)wa: 等待IO时间

9.7 Wget下载命令

实例1:使用wget下载单个文件$wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip说明:以上例子从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。实例2:使用wget -O下载并以不同的文件名保存$wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。实例3:使用wget –limit -rate限速下载$wget --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。实例4:使用wget -c断点续传$wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip使用wget -c重新启动下载中断的文件,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。实例5:使用wget -b后台下载$wget -b http://www.minjieren.com/wordpress-3.1-zh_CN.zip
Continuing in background, pid 1840.
Output will be written to 'wget-log'.
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。你可以使用以下命令来察看下载进度:$tail -f wget-log实例6:伪装代理名称下载wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" http://www.minjieren.com/wordpress-3.1-zh_CN.zip有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。实例7:使用wget -i下载多个文件首先,保存一份下载链接文件,接着使用这个文件和参数-i下载:$cat > filelist.txt
url1
url2
url3
url4$wget -i filelist.txt实例8:使用wget –mirror镜像网站$wget --mirror -p --convert-links -P ./LOCAL URL下载整个网站到本地-miror:开户镜像下载-p:下载所有为了html页面显示正常的文件-convert-links:下载后,转换成本地的链接-P ./LOCAL:保存所有文件和目录到本地指定目录实例9: 使用wget -r -A下载指定格式文件$wget -r -A.pdf url可以在以下情况使用该功能:
下载一个网站的所有图片
下载一个网站的所有视频
下载一个网站的所有PDF文件实例10:使用wget FTP下载$wget ftp-url
$wget --ftp-user=USERNAME --ftp-password=PASSWORD url
可以使用wget来完成ftp链接的下载
使用wget匿名ftp下载:wget ftp-url
使用wget用户名和密码认证的ftp下载:wget –ftp-user=USERNAME –ftp-password=PASSWORD url

9.8 SCP 拷贝命令

scp [参数] [原路径] [目标路径]-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
实例1:从远处复制文件到本地目录$scp root@10.6.159.147:/opt/soft/demo.tar /opt/soft/说明: 从10.6.159.147机器上的/opt/soft/的目录中下载demo.tar 文件到本地/opt/soft/目录中实例2:从远处复制到本地$scp -r root@10.6.159.147:/opt/soft/test /opt/soft/说明: 从10.6.159.147机器上的/opt/soft/中下载test目录到本地的/opt/soft/目录来。实例3:上传本地文件到远程机器指定目录$scp /opt/soft/demo.tar root@10.6.159.147:/opt/soft/scptest说明: 复制本地opt/soft/目录下的文件demo.tar 到远程机器10.6.159.147的opt/soft/scptest目录实例4:上传本地目录到远程机器指定目录$scp -r /opt/soft/test root@10.6.159.147:/opt/soft/scptest说明: 上传本地目录 /opt/soft/test到远程机器10.6.159.147上/opt/soft/scptest的目录中

9.9 Crontab定时任务

crontab [-u user] file crontab [-u user] [ -e | -l | -r ]-u user:用来设定某个用户的crontab服务;
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示
实例1:每1分钟执行一次myCommand* * * * * myCommand实例2:每小时的第3和第15分钟执行3,15 * * * * myCommand实例3:在上午8点到11点的第3和第15分钟执行3,15 8-11 * * * myCommand实例4:每隔两天的上午8点到11点的第3和第15分钟执行3,15 8-11 */2  *  * myCommand实例5:每周一上午8点到11点的第3和第15分钟执行3,15 8-11 * * 1 myCommand实例6:每晚的21:30重启smb30 21 * * * /etc/init.d/smb restart实例7:每月1、10、22日的4 : 45重启smb45 4 1,10,22 * * /etc/init.d/smb restart实例8:每周六、周日的1 : 10重启smb10 1 * * 6,0 /etc/init.d/smb restart实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb0,30 18-23 * * * /etc/init.d/smb restart实例10:每星期六的晚上11 : 00 pm重启smb0 23 * * 6 /etc/init.d/smb restart实例11:每一小时重启smb* */1 * * * /etc/init.d/smb restart实例12:晚上11点到早上7点之间,每隔一小时重启smb0 23-7 * * * /etc/init.d/smb restart

有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

在crontab文件中定义多个调度任务时,需要特别注环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这样,系统执行任务调度时就没有问题了。

不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

  1. 脚本中涉及文件路径时写全局路径;

  2. 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:

    cat start_cbp.sh!/bin/sh
    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中直接引入环境变量解决问题。如:

0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh

博文参考

Linux学习教程,Linux入门教程(超详细)

工具参考篇 — Linux Tools Quick Tutorial

操作系统——linux命令实战相关推荐

  1. JAVAWEB开发之——Linux命令实战、虚拟机和centos的安装以及联网、常用命令、vi编辑以及软件的安装、sftp的使用

    Linux简介 Linux是一种自由和开放源码的操作系统,存放着许多不同的Linux版本,但他们都使用了Linux内核.Linux可安装在各种计算机硬件中 比如.手机.平板电脑.路由器.台式计算机中. ...

  2. linux的git命令,linux命令实战安装git、配置git、创建仓库、部署项目

    搭建Git服务器需要准备一台运行Linux的机器,本文以Centos6.8纯净版系统为例搭建自己的Git服务. 准备工作:以root用户登陆自己的Linux服务器. 一 安装git 1. 安装依赖包 ...

  3. linux命令hwclock,Linux命令之hwclock - 查询和设置硬件时钟

    常用参数 -r, --show         读取并打印硬件时钟(read hardware clock and print result ) -s, --hctosys      将硬件时钟同步到 ...

  4. 苹果电脑基本设置+Linux 命令+Android 实战集锦

    本文微信公众号「AndroidTraveler」首发. 背景 大多数应届毕业生在大学期间使用的比较多的是 windows 电脑,因此初入职场如果拿到一台苹果电脑,可能一时间不能够很快的上手.基于此,这 ...

  5. linux系统关于mysql的命令_[操作系统]Linux 操作MySql命令

    [操作系统]Linux 操作MySql命令 0 2016-11-08 10:00:42 1.安装MySql服务端命令: yum install mysql-server yum install mys ...

  6. Linux操作系统Ifconfig命令详细解析

    无论是Linux 自动安装还是我们手工安装,Linux 都会向你询问有关网络的问题并配置相关的软件.这个用于配置网卡的基本命令就是ifconfig. 在执行ifconfig 命令后,系统将在内核表中设 ...

  7. Linux操作系统相关命令

    Linux操作系统相关命令 Linux中的命令格式为:command [options] [arguments] 中括号表示可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个选项或参 ...

  8. Linux远程操作(rcp/rsh)命令实战

    Linux远程操作(rcp/rsh)命令实战 Linux远程操作(rcp/rsh)命令实战... 1.    rcp. 1 2.    rsh. 4   1. rcp 1.1为使用 rcp 做准备 要 ...

  9. Linux基本功系列之usermod命令实战

    文章目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 使用useradd添加的用户,如果不小心添加错了用户信息该如何修改呢? 这时候就会用到 ...

最新文章

  1. 登录界面的滑动_【提醒】电子税务局登录方式有变化! 8月31日关闭“原方式登录”...
  2. 添加MSDN搜索的正确方法
  3. python怎么换行输入而不执行_关于在IDLE中怎么换行继续敲写代码而不执行语句...
  4. Python DearPyGui 进阶
  5. 【转】Linux内核结构详解
  6. 使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)
  7. python实现QQ登陆验证码数据采集
  8. python运行需要联网吗_基于python分析你的上网行为 看看你平时上网都在干嘛
  9. svn中文语言包安装(内含语言包路径)
  10. .vue文件怎么使用_手机技巧:被人忽视OTG功能怎么使用?复制文件到U盘的新方法...
  11. 【人工智能】传教士和野人问题(M-C问题)
  12. 爱加密安卓应用加固、谨防“越位木马”借世界杯捆绑手机App
  13. Java性能优化从20s优化到500ms,我用了这三招,内容知识满满
  14. TS OLT Internet业务和组播业务(multicast)配置指导
  15. 【CSS】CSS盒子模型
  16. commit work php,GitHub - sbzhu/weworkapi_php: official lib of wework api
  17. java web 实践项目(搭建web留言系统)
  18. Web地图服务规范(WMS、WMTS、TMS)简析
  19. 【2020.10.30 洛谷团队赛 普及组】T4 U138096 租车去春游
  20. 实现isPrime()函数,参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False

热门文章

  1. 反光柱建图venus和我的方案
  2. ios12计算机丢失,iOS12访问限制在哪?找不到iOS12访问限制入口怎么办
  3. 如何开发通达信,东方财富,飞狐等股票dll插件呢?
  4. Infrared and visible image fusion using total variation model(采用全变差模型的红外与可见光图像的融合)
  5. Chrome(谷歌)浏览器一键清缓存插件使用教程
  6. 前端怎么表情符号转码处理
  7. 【复习】CSP2021-模板
  8. 项目经理两天要做的事
  9. 计算机CPU哪家好,电脑处理器排行榜,教您电脑处理器哪个好
  10. PS 图像调整算法——自动对比度 (Auto Contrast)