滴滴面试总结之写出你常用的linux命令及详解

常用的linux命令及详解

1. cd -- 最常用,参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径

cd /root/Docements # 切换到目录/root/Docements  

cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录    

cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录 

2. ls -- 这是一个非常有用的查看文件与目录的命令,list之意,它的参数非常多

-l :列出长数据串,包含文件的属性与权限数据等  

-a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)  

-d :仅列出目录本身,而不是列出目录的文件数据  

-h :将文件容量以较易读的方式(GB,kB等)列出来  

-R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来

3. cat -- 用于查看文本文件的内容,后接要查看的文件名,通常可与more和less一起使用,从而可以一页页地查看数据。

cat text | less # 查看text文件中的内容  

# 注:这条命令也可以使用less text来代替,可以翻页

4. vim -- 主要用于文本编辑,它接一个或多个文件名作为参数,如果文件存在就打开,如果文件不存在就以该文件名创建一个文件。

5. kill -9 -- 该命令用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用,它的基本语法如下:

kill -signal PID  (★那么问题来了,kill -9 为啥写9呢?这个9什么意思?死背命令的?........

signal的常用参数如下:

1:SIGHUP,启动被终止的进程  

2:SIGINT,相当于输入ctrl+c,中断一个程序的进行  

9:SIGKILL,强制中断一个进程的进行  

15:SIGTERM,以正常的结束进程方式来终止进程  

17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行)

6. chmod -775 -- 用于改变文件的权限

详细权限问题参见:http://www.cnblogs.com/avril/archive/2010/03/23/1692809.html

个人对权限的简单小结 -- chmod -R -777 文件 是对文件赋予最大权限,

-R 表示循环递归对文件夹及子文件/文件夹 全部赋权限

(rwx -对应‘可读、可写、可执行’- 421) 加起来就是7,0代表无此权限,

第一个7表示当前用户对文件的操作权限

第二个7表示和当前用户同组的用户对文件的操作权限

第三个7表示其他用户对文件的操作权限

7. chown -- 该命令用于改变文件的所有者,chgrp命令用于改变文件所属用户组

用法:chgrp [-R] dirname/filename  (chown同理)

chgrp users -R ./dir  表示递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users

8. ps -ef|grep -- 用于查找包含“字符串”的进程

ps -ef是显示所有进程的消息

-A  显示所有程序。 

-e  此参数的效果和指定"A"参数相同。

-f  显示UID,PPIP,C与STIME栏位。 

grep命令是查找中间的|是管道命令 是指ps命令与grep同时执行,

grep是查找输出包含想要的字符串的行,也就是说grep string是在所有运行的进程中查找输出包含“string”字符串的输出行,

这里面就包含string,和grep string 两个进程。

9. crontab -- 用于linux 的定时任务执行。crontab命令选项:

-u 指定一个用户

-l 列出某个用户的任务计划

-r 删除某个用户的任务

-e 编辑某个用户的任务

crontab -e 中文件的基本格式为:

*/2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 前面无谓分别表示:分、时、天、月、星期

详细:*/2 表示每两分钟执行一次,如果这位是固定的数字,则表示每小时的2分钟时,都会执行一次。

另外,启动crontab服务一般启动服务用  /sbin/service crond start 若是根用户的cron服务可以用 sudo service crond start,若是在根用下直接键入service cron start就能启动服务,查看服务是否已经运行用 ps -ax | grep cron

10. whereis -- 该命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

        和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

-b   定位可执行文件。

-m   定位帮助文件。

-s   定位源代码文件。

-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

-B   指定搜索可执行文件的路径。

-M   指定搜索帮助文件的路径。

-S   指定搜索源代码文件的路径。

使用例子:whereis -m svn 查出说明文档路径,whereis -s svn 找source源文件

11. mkdir -- 新建文件夹,mkdir test 就是在当前路径下新建了test的文件夹。

文件夹及文件相关的操作:

①. cp  -- 用于复制(在做webapp备份时,我常用cp -r -a file filedest)

-a :将文件的特性一起复制  

-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份  

-i :若目标文件已经存在时,在覆盖时会先询问操作的进行  

-r :递归持续复制,用于目录的复制行为  

-u :目标文件与源文件有差异时才会复制  

②. rm -- 用于删除文件

-f :就是force的意思,忽略不存在的文件,不会出现警告消息  

-i :互动模式,在删除前会询问用户是否操作  

-r :递归删除,最常用于目录删除,它是一个非常危险的参数 

我常用的 rm -rf file 强制递归删除file文件或文件夹及其子目录的文件或文件夹

③. mv -- 用于移动文件或者重命名文件

-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖  

-i :若目标文件已经存在,就会询问是否覆盖  

-u :若目标文件已经存在,且比目标文件新,才会更新  

----update 2017.11.07----

实例:1> 将文件ex3改名为new1,mv ex3 new1 2> 将目录/usr/men中的所有文件移到当前目录(用.表示)中: mv /usr/men/* .

12. nohup ./sh & 和 tail -f nohup.out

这是我在服务器端启动Weblogic时候,常用的命令:

①. nohup 表示 no hang up, 即不挂起、一直运行命令。运行的日志文件存到当前目录的nohup.out文件中,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

②. tail -f nohup.out 表示实时监视该日志文件,默认读尾部的10行,tail命令的使用例子如下:

1、tail -f filename监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。

2、tail -n 20 filename显示filename最后20行。

3、tail -r -n 10 filename逆序显示filename最后10行。

详细参考:http://www.cnblogs.com/mfryf/p/3336804.html

13. 前台程序、后台程序 切换运行 (详细:http://blog.csdn.net/hshl1214/article/details/50144257

我遇到了这样的情况,在使用weblogic启动写的Java程序时候,Java的项目有多个模块组成,那么可能还需要在项目主模块起来之后,启动辅助的模块。所以现将模块前台启动,然后开启Java的各个模块后,再将项目weblogic程序转到后台运行。

        前台启动完项目之后,ctrl+z(前台进程挂起,后台进程挂起用 kill -stop PID) 让程序停止,jobs -l 列出当前正在执行的任务,可以看到该任务的状态是stopped,此时,查处停止的job号,假设为num,使用bg %num,即等同于./sh &。同样,转前台运行fg %num。

14. find -- 查找常用命令,语法为:find [PATH] [option] [action] 

主要:

①. find / -name passwd # 查找文件名为passwd的文件 

②. -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;  

-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;  

-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;  

-newer file : 列出比file还要新的文件名  

如:

find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件  

find /home/oracle -user oracle # 在目录/home/oracle 中找出所有者为oracle 的文件 

find . -perm 0755 # 查找当前目录中文件权限的0755的文件 

15. shell脚本怎么写(简单的教程:http://www.runoob.com/linux/linux-shell.html

kettle定时脚本:

#!/bin/sh

LANG=zh_CN.UTF-8

JAVA_HOME=/home/oms/jdk1.7.0_79

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

export JAVA_HOME PATH CLASSPATH LANG

log_dir=/home/oms/kettle/logs

kettle_home=/home/oms/kettle/ETL/4.4.0/data-integration

DATA_TIME=`date "+%F" -d '0 day'`

yy=`echo $DATA_TIME|cut -d "-" -f1`

mm=`echo $DATA_TIME|cut -d "-" -f2`

dd=`echo $DATA_TIME|cut -d "-" -f3`

repname=omsrdc

repuser=he3-omsweb3

reppass=OMS@#tellhow

datatime=$yy$mm$dd


if [ ! -x $log_dir/$datatime ];

then

 mkdir -p $log_dir/$datatime

fi

......



http://www.cnblogs.com/laov/p/3541414.html
http://blog.csdn.net/ljianhui/article/details/11100625/
https://wenku.baidu.com/view/7c65d7f5b9f3f90f76c61b80.html?from_page=view&from_mod=download

猜你喜欢

转载自blog.csdn.net/Juwenzhe_HEBUT/article/details/77645551