Linux服务器常用命令(简化版)信息来源:网络整理:HY 日期:2011-5-27Intel Fortran编译Linux shell管道命令(pipe)使用及与shell重定向 Linux命令替换Linux 任务控制(bg jobs fg nohup &)Linux进程查看Linux账户管理Linux系统与硬盘信息查询Linux VIM语法高亮与程序段错误Linux十大常用命令Intel Fortran编译完整编译顺序$ ifort -c Hello.f90 -o Hello.o编译源文件(.f90)生成目标文件(.o)$ ifort Hello.o -o Hello链接目标文件生成可执行程序Hello$./Hello 执行可执行程序默认(常用编译方法)$ ifort Hello.f90编译&链接$./a.out 执行a.out(默认可执行程序名)后台运行$ ./a.out & 后台运行,退出shell会使程序停止,输出信息会显示在屏幕,不建议这样使用$nohup ./a.out & 输出到屏幕的信息输出到nohup.out文件$nohup ./a.out > screen.txt & 输出到屏幕的信息输出到screen.txt文件(推荐)Linux shell管道命令(pipe)使用及与shell重定向Ref:/chengmo/archive/2010/10/21/1856577.html重定向详细解释参考:/view/2173319.htm在Linux命令行模式中,如果命令所需的输入不是来自键盘,而是来自指定的文件,这就是输入重定向。
同理,命令的输出也可以不显示在屏幕上,而是写入到指定文件中,这就是输出重定向。
重定向分为: 重定向分为 输出重定向、输入重定向和错误重定向。
< 实现输入重定向。
>或>> 实现输出重定向,用户可以使用输出重定向把一个命令的输出重定向到一个文件 1)ls –l /etc>dir 将ls命令生成的/etc目录下的一个清单存到当前目录 中的dir文件,而不在屏幕输出。
2)ls –l /usr>>dir 将ls命令生成的/usr目录的一个清单以追加的方式存 到当前目录中的dir文件中。
重定向连接两个或多个文件?使用cat命令并重定向输出到一个文件可以连接两个或多个文件。
重定向追加到一个文件:可以使用双重定向输出符号“>>”,保留文件以前的内容。
这种情况下,命令输出追加到另一个文件中。
重定向重定向标准输出到一个设备?除了重定向一个命令的输出到一个文件,也可以把它重定向到一个设备,因为UNIX系统将设备当做文件。
$echo “Hello! I am petter!” > /dev/tty01重定向标准输入?使用“<”重定向输入。
例如:用户已经创建好了一个文件letter。
如果希望通过电子邮件发送给用户petter。
可以使用下面方式:$mail petter < letter重定向标准错误重定向?没有专门的符号用于重定向stderr。
我们可以同样使用“< ”或“>”符号,但需在它前面补一个数字2。
PS:重定向的优先级大于管道的优先级!^_^管道右边的命令只能对管道左边的命令的标准输出(输出到屏幕)起作用,不对错误输出(也输出到屏幕)起作用。
一个命令的执行首先决定0,1,2设备的定向,然后才执行命令,可以将定向理解为命令执行的前提条件,条件满足后才开始执行命令,但命令仍为主体,定向作为修饰的定语。
Exsample:$cat hello.txt | tee hello_back.txt &>/dev/null&表示正确与错误输出,&>的作用是把正确与错误输出进行重定向;>的作用是把正确输出进行重定向,等同与1>;2>的作用是把错误输出进行重定向。
&>/dev/null表示正确与错误输出都重定向到/dev/null上面命令的作用等同于:$cat hello.txt >hello_back.txt管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是standard output 的信息,对于stdandard error 信息没有直接处理能力。
然后,传递给下一个命令,作为标准的输入standard input.管道命令使用说明:先看下下面图:command1正确输出,作为command2的输入然后comand2的输出作为,comand3的输入,comand3输出就会直接显示在屏幕上面了。
通过管道之后:comand1,comand2的正确输出不显示在屏幕上面注意:1、管道命令只处理前一个命令正确输出,不处理错误输出2、管道命令右边命令,必须能够接收标准输入流命令才行。
管道命令与重定向区别区别是:1、左边的命令应该有标准输出 | 右边的命令应该接受标准输入左边的命令应该有标准输出 > 右边只能是文件左边的命令应该需要标准输入 < 右边只能是文件2、管道触发两个子进程执行"|"两边的程序;而重定向是在一个进程内执行PS:shell命令解析前,要首先检查它的输入输出设备(即0,1,2设备)是否准备好,因此重定向运算符优先级最高,即重定向命令优先管道命令执行。
同标准I/O一样,Unix Shell对于每一 个进程预先定义3个文件描述字(0、1、 2)。
分别对应于: 0(STDIN_FILENO):标准输入; 1 (STDOUT_FILENO) :标准输出; 2 (STDERR_FILENO) :标准出错输出。
重定向与管道在使用时候很多时候可以通用,一般如果是命令间传递参数,还是管道的好,如果处理输出结果需要重定向到文件,还是用重定向输出比较好。
命令执行顺序可以看下:Linux Shell 通配符、元字符、转义符使用实例介绍管道及其使用管道管道即将一条命令执行后产生的结果数据通过标准输出送给后一条命令,作为该命令的输入数据。
管道使用命令“|”将这些命令前后衔接在 |” 一起,形成一个管道线,格式为: 命令1|命令2|……|命令3 管道线中的每一条命令都作为一个单独的进程运行,每一条命令的输出作为下一条命令的输入。
命令执行的顺序是从左至右。
管道经常用于过滤、修改或维护一个命令的输出。
1、用管道做过滤器,很多时候不需要一个命令产生的全部输出。
这种情况下,用户可以从有命令产生的输出中过滤想要的信息。
2、用管道进行数据处理:管道T接头是一种特殊类型的管道,与现实生活中的T型管道接头很相似,用于重定向一个管道数据到多个地方。
tee命令相当于一个T接头功能。
它从stdin得到输入并把同样的内容写入stdout和别的文件中。
管道命令的间隔符命令间隔符:一个命令行中可以若干条命令,各个命令之间可以用下表的字符进行间隔。
; 用“;”间隔的各命令按顺序依次执行。
&& 前后命令的执行存在“逻辑与”关系,只有&&前面的命令执行成功后,后面的命令才被执行。
| | 前后命令的执行存在“逻辑或”关系,只有“| |”前面的命令执行失败,后面的命令才被执行。
当几个命令的间隔符同时出现在同一个命令行上时,其优先级为: 1) ;的优先级最低 2)| |和&&具有相同的优先级 3)相同优先级,按从左到右的结合原则执行命令行 4) 使用“( )”可以组合命令行中的命令,改变执行顺序。
Linux命令替换在Linux命令行模式下,当遇到一对“`” (上分割符)时,将首先执行“`”中间包含的命令,然后将其输出结果作为参数代入命令行中,这就是命令替换了。
它类似于输入输出的重定向功能,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。
下面来看它的实际应用。
1.使用命令替换# touch `date +%Y%m%d%k%M%S`.txt该命令使用了一次命令替换,date +%Y%m%d%k%M%S命令将首先执行,它将按指定格式输出当前的时间。
然后,这个时间将被作为touch命令的参数,其结果是建立了一个以当前时间为文件名的文件。
2.使用命令替换# kill `/sbin/pidof smbd`该命令将杀掉sshd的所有进程。
这里用pidof这个命令给出进程号,因为kill是针对进程号进行操作的。
两者通过命令替换,实现了只用一条命令就杀掉sshd所有进程的功能。
综合应用在理解和熟悉了前面的几个技巧后,将它们综合运用起来就是较高的技巧了。
同时,一些常用的、且本身用法就比较复杂的Linux命令一定要熟练掌握。
在构造Linux命令中常常用到的一些基础的、重要的命令有grep、tr、sed、awk、find、cat和echo等,下面来看一些综合应用的例子。
1.# man ls | col -b > ls.man.txt这条命令同时运用了输出重定向和管道两种技巧,作用是将ls的帮助信息转成一个可以直接阅读的文本文件。
2.# kill -9 `ps -ef | grep smbd | tr -s ' ' | awk -F' ' '{print $2}'`这个例子的功能和上面的功能是一样的,不过它不依赖pidof命令,使用的是多数Unix类系统中都有的命令,适用于更多的系统环境。
但是它看起来更复杂一些,使用了三个管道和一次命令替换,另外使用了grep、tr和awk三个与字符操作相关的命令。
从前面的介绍可以看出,通过几种技巧的组合,Linux命令可以完成复杂的功能。
除此之外,还可以将这些命令组织到一个脚本中来,加上函数、变量、判断和循环等功能,再加入一些编程思想,就是功能更强大的Shell脚本了。
Linux 任务控制(bg jobs fg nohup &)Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务。
因此在任务管理上也有别具特色的管理思想。
我们知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。
而不能让程序在前台后台之间切换。
而 Linux 提供了 fg 和bg 命令,让你轻松调度正在运行的任务。
假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示:[1]+ Stopped /root/bin/rsync.sh然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)#bg 1[1]+ /root/bin/rsync.sh &用 jobs 命令查看正在运行的任务:#jobs[1]+ Running /root/bin/rsync.sh &如果想把它调回到前台运行,可以用#fg 1/root/bin/rsync.sh这样,你在控制台上就只能等待这个任务完成了。