这里列出一些个人在工作中常使用的各种linux命令,每一个不详细讲参数,只写经常用的参数。希望快速获得在linux命令行工作的能力的朋友可以看看。本人一直觉的,不使用linux 图形界面,以xshell等ssh客户端使用基础版linux才是学习linux命令的正确姿势。如果想深入每一个命令学习,可以使用man手册,或者推荐一个博客:每天一个linux指令系列https://www.cnblogs.com/peida/category/309012.html。
文件
scp
远程文件复制命令,一般用法
scp -P port -r src_file remote_user2@remotehost1:dest1 remote_user2@remotehost2:dest2
其中
-P 指定端口
-r 表示递归cp整个目录
后面的多个远程主机地址表示向多台机器复制
例如
scp -P 360 -r /data/release/movesun.com root@10.135.25.177:/data/release/movesun.com
rsync
文件差异化同步,只复制修改过的文件,效率高。一般用法
rsync -avz src dest
其中
-a 表示打包压缩传输
-v 详细输出过程
-z 对备份的文件传输时进行压缩
src 源文件 ,可以是远程主机文件
dest 目标文件,可以是远程主机文件
例如
rsync -az /data/init_dirs/cd_root root@10.135.25.177:/data/cd_root
tar
文件压缩打包,准确说tar包只是打包工具,并不压缩,结合gzip等程序对tar包进一步压缩。一般用法
tar zcvf dest.tar.gz srcfiles
其中
z 表示 使用gip压缩或解压,还有别的格式如biz 则用字母b
c 表示压缩
x 表示解压
v 输出过程
f 指定压缩文件名
-C 指定解压目录
例如
tar zcvf movesun.tar.gz movesun.com
tar zxvf movesun.tar.gz -C /data/release/movesun.com
ln
建立文件链接,分软链接和硬链接,软链接类似windows快捷方式,本身占inode和空间,而硬链接并不新增inode。一般用法
ln -s -b src_file dest_link
其中
-s 表示软链接
-b 表示覆盖
例如
ln -s -b /data/docker /var/lib/docker
du
查看文件占用空间,常用来定位大文件,大目录,清理磁盘空间。在windows上如果安装过cygwin或者git bash的可以用du程序查看C盘空间。一般格式
du -sh *
其中
-s 表示只显示统计
-h 表示存储单位K,M,G自适应显示
* 表示当前目录下所有文件或者目录
例如在windows 查看C盘空间占用
chmod
修改文件权限。linux中文件权限以9位字符表示,例如
-rw-r--r--
其中第一个-不是权限,表示文件类型,后面9个字符表示权限
前三位表示文件所属用户具有的权限
中三位表示文件所属用户组具有的权限
后三位表示其他用户具有的权限
其中每三位分别是rwx ,r表示读,权值4,w表示写,权值为2,x表示执行权,权值为1。chmod可以以权值的形式修改文件权限,例如
chmod -R 777 /data/release/movesun.com/app/storage
其中
-R表示递归处理目录
777 表示rwxrwxrwx,也就是任意用户都具有读、写、执行权限
chown/chgrp
修改文件所属用户和用户组,在master worker类型的多进程程序,如nginx,php-fpm等,worker一般不是以root用户运行,这时去访问一些没有权限的目录,常常会有异常,比如http 403错误。这时就可以考虑提高目录权限,或者将目录所有者修改为进程所属用户。
比如
修改文件所属用户
chown -R nginx /data/release/movesun.com
修改文件所属用户组
chgrp -R nginx /data/release/movesun.com
其中 -R表示递归处理
进程
killall/kill
用来停止进程
killall按进程名称查杀进程,进程名并非我们常用ps命令看到的最后那列COMMAND那一列,而应该通过/proc/pid/status 中的Name字段查看。killall按照这里的进程名取得进程id查杀。如果父进程名与子进程名是一样的,则会一并停止掉进程。不难发现,nginx,php-fpm的master进程和worker进程都是同样的名字,所以可以通过killall nginx查杀所有nginx master和worker进程。在c或c++中进程名可以通过修改argv[0]进行修改。
而kill通常用来停止指定进程,或者响起发送各种信号,参数为进程ID,一般用9(KILL)信号杀掉进程,如kill -9 5162。可以结合ps grep awk等获取到要查杀的进程id。
lsof
用来查看系统打开的文件。常用来定位进程的文件位置、查看进程打开的文件句柄。因为网络连接实际也是占用文件句柄,所以也可以通过lsof看进程打开的网络连接。一般使用如下
lsof -p 4304
其中4304是进程id。此命令查看该进程打开的文件。
lsof -i:80
其中80为网络端口。此命令用来查看哪些进程占用80端口
lsof /usr/lib64/libstdc++.so.6.0.19
查看哪些进程打开了/usr/lib64/libstdc++.so.6.0.19文件
ps
用来显示瞬时的进程状态,或者手进程快照。常用来定位进程是否存在、获取进程id、获取父进程id或者进程树、查看进程创建的线程等。因为ps支持多种形式的参数风格,所以带-与不带-会有很大区别,甚至不能执行。一般使用如下:
ps axu
显示所有进程,并包含进程所属用户,CPU,MEM,耗费的CPU时间等列
ps -ef
显示所有进程,显示的列要比axu少
ps -axjf
显示进程树,类似于pstree
top
用来查看进程资源占用。linux top有点类似于windows任务管理器。常用来查看哪些进程占CPU、内存较高,负载,多核状态等。一般用法如下
按内存占比排序
运行top之后,按shift+m以内存占用排序,再按字母e,切换存储单位显示
查看多核心状态
运行top之后按1
strace
用来跟踪一个进程发出的系统调用。经常用来定位程序bug,定位系统卡慢原因,比如当系统磁盘IO过高时,由strace可以很容易发现进程会卡在io操作的系统调用上。一般使用方法如下。
starce command
如
strace ./get_example,会打印出运行此程序产生的每一个系统调用
pstack
用来查看一个运行中进程的堆栈。此工具实际是一个shell脚本,可以看到其使用gdb查看进程堆栈。一般使用方法如下
pstack 23560 其中23560是进程id
网络
netstat
用来显示网络信息。常用来查看机器监听的端口,建立的网络连接,显示路由信息等等。一般用法如下
netstat -ntlp
查看所有监听的tcp端口及其进程,其中
n表示尽量显示数字
t表示只显示tcp
l表示只显示处于监听状态的
p表示显示哪个程序在监听
netstat -lt
显示监听状态的tcp连接
nestat -n
显示所有打开的网络连接
ss
用来查看socket统计信息。可以实现跟netstat一样的功能,而且更强大。一般用法
ss -t -a
显示所有tcp连接
ss -l
显示打开的所有端口,包括本地与外部通信的源端口。
telnet
telnet客户端是基于应用层telnet协议的远程登录程序。本人一般用来检测端口是否畅通。其实也就是判断能否建立tcp连接,至于连接后的通信协议不一致,是不用考虑的问题,因此也可以用别的网络命令来检测端口是否畅通,不过已经用惯了telnet。使用如
telnet 10.135.25.177 3306
而用别的网络客户端程序也可以测试
端口畅通
ssh 127.0.0.1 -p 3306
ssh_exchange_identification: Connection closed by remote host
端口不通
ssh 127.0.0.1 -p 12
ssh: connect to host 127.0.0.1 port 12: Connection refused
未完待续......
- Linux常用命令及使用技巧
本文重点讲述Linux命令的使用,命令是学习Linux必须熟练掌握的一个部分.Linux下的命令大概有600个,而常用的命令其实只有80个左右,这些常用的命令是需要灵活掌握的.虽然Linux的各个发行 ...
- Linux常用命令及Shell的简单介绍
一.linux命令 1.查看指令的参数搭配: man 指令名称 2.基础指令 ls 列出当前目录下的所有文档的名称(文档指的是文件和文件夹) 常用参数搭配: ls -l 列出文档详细信息 l ...
- Linux常用命令及shell脚本
一. 用户管理(添加用户.切换用户.删除用户) ~ ...
- Linux 常用命令和使用技巧
一.Shell命令 shell通配符------"*"."?"."[]" shell管道-------|把命令连接起来,把第一个命令的输出作 ...
- linux常用命令及使用技巧(一)
shell命令格式:command [options][arguments] shell的通配符 *匹配任意一个或多个字符 ?匹配任意单一字符 []匹配任何包含在方括号内的单字符 shell的重定向: ...
- linux常用命令(shell脚本常用命令)(grep、cut、sort、uniq、seq、tr、basename、dirname)
本章命令: 1 2 3 4 5 6 grep cut sort uniq seq tr 1.grep 作用:过滤文本内容 选项 描述 -E :--extended--regexp 模式是扩展正则表达式 ...
- Linux常用命令和Shell编程基础
目录相关 cd - .与.. 分别表示当前目录和父目录 - ~与$HOME 都是指当前用户的主目录 - cd – 切换到上一次所在的目录(不一定是父目录) pwd - pwd 显示当前目录 - $PW ...
- linux常用命令及使用技巧(三)
文件管理与编辑 mkdir创建一个目录 mkdir [选项] 目录名 -m 设置存取权限 -p 可以一次创建多个目录 more命令读取文本文件,灭次显示一屏,并在每屏后暂停 cat命令将文件的内容输出 ...
- linux常用命令及使用技巧(二)
ls显示指定工作目录下的内容,同windows中的dir命令 pwd命令显示当前工作目录 date命令,显示或修改系统时间与日期 passwd命令,设置用户密码 su命令改变用户身份 clear命令, ...
随机推荐
- Oracle查询数据出来乱码问题?
为什么Oracle 查询出来的数据会产生乱码? 安装的数据库和客户端编码编码不一致就会产生乱码,要想解决此问题改一下客户端的编码即可 1. select * from table; 如果是这种问题 ...
- MVC分层含义与开发方式
真正的服务层是面向数据的,假想一切数据都是从参数获得 控制层是接受页面层数据,再传给服务层,然后将结果返回给页面层的(客户) 页面层是提交格式化的数据的(容易小混乱,无格式,所以要格式化,可以在中间加 ...
- python装饰器大详解
1.作用域 在python中,作用域分为两种:全局作用域和局部作用域. 全局作用域是定义在文件级别的变量,函数名.而局部作用域,则是定义函数内部. 关于作用域,我要理解两点:a.在全局不能访问到局部定 ...
- mysql基于binlog回滚工具_flashback(python版本)
update.delete的条件写错甚至没有写,导致数据操作错误,需要恢复被误操作的行记录.这种情形,其实时有发生,可以选择用备份文件+binlog来恢复到测试环境,然后再做数据修复,但是这样 ...
- octomap中3d-rrt路径规划
路径规划 碰撞冲突检测 在octomap中制定起止点,目标点,使用rrt规划一条路径出来,没有运动学,动力学的限制,只要能避开障碍物. 效果如下: #include "ros/ros.h&q ...
- Python os模块实例之遍历目录及子目录指定扩展名的文件
需求:在该目录下有很多子目录(如下图,截图了部分),现要从该目录和所有子目录下找到所有扩展名为.meta的文件,并获取文件中第二行guid的值(': '后面的),然后将所有guid的值输出到另一文件中 ...
- 【解决】VS2013 + Qt 5.7(5.6适用)使用QSqlDatabase出现“无法解析的外部符号"错误
原始日期: 2016-08-03 22:09 错误如下: error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscal ...
- VMware中Linux系统时间与主机同步以及时区设置
网络上有各种资料,但最简单的一种方法就是修改虚拟机的配置文件 *.vmx .修改 tools.syncTime = "FALSE" 为 tools.syncTime = " ...
- Example010实现浏览器兼容改内容的函数,自写
<!-- 实例010实现浏览器兼容改内容的函数 --> <!DOCTYPE html> <html lang="en"> <head> ...
- JavaScript函数部分
函数部分学习:+parseInt(): -parseInt()函数将其收到的任何输入值(通常是字符串)转换成整数类型输出,如果转换失败就返回NaN. -parseInt(“参数”,第二参数基数):没有 ...