参考资料:鸟哥的Linux私房菜

常用命令

查看内存: free -h

查看端口使用情况:netstart -ntpl 或者:netstat -nat netstat -nat | grep LISTEN

查看档案内容:

  • cat : 将档案内容全部列出
  • head : 只列出档案前10行
  • tail : 列出档案最后10行

补充:使用nl可以达到与cat相似的功能,并且加上行号

查询程序主进程号:ps -ef | grep nginx

查询程序主进程号并终止:kill -9 $(ps -ef | grep uwsgi | grep -v grep | awk '{print $2}')

ssh登录保持长连接 : ssh -o serveraliveinterval=60 root@23.126.105.39 -p 27573

查看8000端口是否被占用: lsof -i:8000


Linux文件搜索
文件搜索命令 locate

locate命令其实是”find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

搜索etc目录下所有以sh开头的文件 locate /etc/sh

搜索用户主目录下,所有以m开头的文件 locate ~/m,忽略大小写使用:locate -i ~/m

命令搜索命令 whereis 与 which

whereis命令只能用于程序名的搜索,如: whereis grep

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

find 命令

find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。

find <指定目录> <指定条件> <指定动作>

  • <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
  • <指定条件>: 所要搜索的文件的特征。
  • <指定动作>: 对搜索结果进行特定的处理。

例如搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息: find . -name 'my*' -ls

根目录下查找 以小写字母开头、数字.log 结尾的文件:find / -name "[a-z]*[0-9].log"


文件的拷贝

递归拷贝命令(将文件夹及目录下的所有文件拷贝) : cp -r upload_assets /root/

本地拷贝文件到远程:scp MP_verify_oixkR51uu2uTOAMq.txt root@139.176.83.122:/var/WWW/HTML

远程拷贝文件到本地:scp root@139.176.83.122:/root/backup/201612201009bak.sql /Users/yetongxue/desktop

远程拷本地(使用端口号):scp -P 29481 root@23.126.105.39:/root/my_key/ca.cert.pem ./

本地拷远程(使用端口号):scp -P 29481 yeli.key root@23.126.105.39:/root/my_website_server


系统权限

查看文件目录权限: ll -d dirname(查看目录下文件权限: ll dirname)

单纯的档案权限查看,可以使用 ls -l 或 ll查阅,输出:drwxr-xr-x 4 root root 4096 Dec 31 01:40 my_website

输出内容说明如下:

  • -: 代表後面的檔名為一般檔案
  • d: 代表後面的檔名為目錄檔
  • l: 代表後面的檔名為連結檔 (有點類似 windows 的捷徑概念)
  • b: 代表後面的檔名為一個裝置檔,該裝置主要為區塊裝置,亦即儲存媒體的裝置較多
  • c: 代表後面的檔名為一個週邊裝置檔,例如滑鼠、鍵盤等

然后之后的九个符号平分成3组:分别代表user/group/其他 这三类用户所对应的权限:

  • r: read,可讀的意思
  • w: write,可寫入/編輯/修改的意思
  • x: eXecutable,可以執行的意思

修改拥有者:chown user my_website


有关vim

字符移动(支持字符前缀: 10j ,向下移动10行): 左:h 下:j 上:k 右:l

单词移动:

  • w:移动到下一个单词词首
  • b:移动到上一个单词词首
  • e:移动到下一个单词词尾
  • ge:移动到上一个单词词首
  • ^:到行首, $:到行尾

终端操作的一些快捷键

  • ctrl + c 强制终止当前命令
  • ctrl + l 清屏
  • ctrl + a 光标移动到行首
  • ctrl + e 光标移动到行尾
  • ctrl + u 从光标所在位置删除到行首
  • ctrl + z 把命令放入后台
  • ctrl + r 在历史命令中搜索

BASH

查看是否是bash 內建命令:type -a ls

Linux语言设置:/etc/locale.conf

login shell bash 环境变量的设置:

  1. /etc/profile:这是系统整体的设定,你最好不要修改这个档案;
  2. ~/.bash_profile 或~/.bash_login 或~/.profile:属于使用者个人设定,你要改自己的资料,就写入这里!(备注:系统读取个人设定的环境变量时,依据这三个文件的优先次序读取,一旦文件存在则终止后面文件的读取)

BASH变量中单双引号是有区别的,双引号才能让变量保持原来的内容,而单引号就只是变量名而已了

查看系统以及自定义变量: set

取消变量: unset 变量名称

将自定义变量转为环境变量: exprot 变量名称

声明变量:declare / typeset [-aixr] varibale ,其中:

  • -a:数组类型
  • -i:整型
  • -x:用法与export一样,将varibale变成环境变量
  • -r: 设定varibale只读,不可修改,也不可unset

由于/etc/profile 与~/.bash_profile 都是在取得login shell 的时候才会读取的设定档,所以, 如果你将自己的偏好设定写入上述的档案后,通常都是得登出再登入后,该设定才会生效。那么,能不能直接读取设定档而不登出登入呢?可以的!那就得要利用source 这个指令了:source ~/.bash_profile

管线命令(pipe):ls -al /etc | less,说明:管线前面的命令结果作为管线和面命令的输入,前后命令先后执行


Linux 的目录

/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root:该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux: 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv: 该目录存放一些服务启动之后需要提取的数据。

/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。 该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:这个目录是用来存放一些临时文件的。

/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。

/usr/bin:系统用户使用的应用程序。

/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。