系统管理员常用的Linux命令
整理Linux的一些基本系统管理命令作为备忘
=========================================================================
查看文件或编辑文件:
=========================================================================
查看当前目录下文件、文件夹及读写执行权限
$ ll
输出说明:(以mnt/这条记录为例)
第一列(drwxrwxr-x)标识文件类型和文件权限
第二列(5)标识文件链接个数
第三列(root)标识文件所有者
第四列(bme319-users)标识文件所在组
第五列(4096)表示文件长度(大小)
第六至八列(Aug 3 20:54)文件最后更新时间
第九列表示文件名称
第一列第一个字符表示文件类型:
d |
目录 |
- |
文件 |
l |
链接 |
s |
socket |
p |
named pipe |
b |
block device |
c |
character device |
第一列2~10字符每三个字符一组,分别表示文件所有者、文件所在组、其他用户的权限:
rwx(read, write, execute) 显示为有权限,-表示没有权限,以mnt/为例,表示文件所有者root拥有读写执行权限,所在组bme319-users拥有读写执行权限,其他用户有读和执行权限,没有写权限。需要说明的是,用户需要有执行权限才能进入文件夹(或目录)
=========================================================================
查看文件最后一部分内容:
$ tail
查看文件最后10行内容:
$ tail mongod.log
查看文件最后20行内容:
$ tail -n mongod.log
当文件有新内容时打印出来:
$ tail -f mongod.log
适合在执行应用程序时查看日志输出
=========================================================================
查看或合并文件
$ cat
查看文件:
$ cat mongod.log
标注文件行号:
$ cat -n mongod.log
两行以上的空白行只显示一行:
$ cat -s mongod.log
合并文件:
把log1.log的内容加上行号后输入到log2.log里:
$ cat -n log1.log log2.log
把log1.log和log2.log中的内容除空白行外加上行号输入到log3.log里:
$ cat -b log1.log log2.log log3.log
=========================================================================
编辑文件
$ sudo vim /etc/mongod.conf
进入编辑页面后,即可使用vim的一些用法编辑文件:
i 进入编辑插入模式,点击Esc可以返回vim
x 删除光标后的一个字符
:q 退出
:wq 保存并退出
:q! 强制退出(不保存)
具体其他编辑方法请查看vim用法
=========================================================================
权限相关:
更改文件或目录权限:
$ chmod
read权限赋值为4,write权限赋值为2,execute权限赋值为1,更改权限时,将需要赋予的权限相加,共有3个数字,分别表示所有者、所有组、其他用户。例如:对文件mongod.conf,所有者有读写执行权限、所有组拥有读和执行权限、其他用户只有读权限,那么使用如下命令:
$ chmod mongod.conf
对于目录,希望将其子目录都进行更改,只需要增加-R操作:
$ chmod -R /mnt
=========================================================================
更改文件或目录的所有者:
$ chown (change owner)
把文件mongod.conf的所有者更改为bme319
$ chown bme319 mongod.conf
同样可以使用 -R操作:
$ chown -R bme319 /mnt
=========================================================================
更改文件或目录的所有群组:
$ chgrp (change group)
与上面用法类似:
$ chgrp bme319 mongod.conf
$ chgrp -R bme319 /mnt
=========================================================================
curl命令:
这是一个网站开发的十分有用的命令
查看网页源代码:
$ curl www.sina.com
自动跳转(有些网址是自动跳转的):
$ curl -L www.sina.com
可以跳转到www.sina.com.cn
显示http response头信息:
i大写只显示头信息,小写显示头信息及网页代码
$ curl -i www.sina.com
$ curl -I www.sina.com
显示http通信过程:
$ curl -v www.sina.com
或者更详细的通信过程:
$ curl –trace output.txt www.sina.com
或者
$ curl –trace-ascii output.txt www.sina.com
发送表单信息:
GET请求:
$ curl example.com/form.cgi?data=xxx
POST请求:
$ curl -X POST –data “data=xxx” example.com/form.cgi
如果需要将数据进行表单编码:
$ curl -X POST –data-urlencode “date=April ” example.com/form.cgi
注意到上面GET时直接使用$ curl [url]而POST时需要-X参数,事实上,-X参数可以指定任意HTTP动词:
$ curl -X DELETE www.example.com
如果网域需要HTTP认证,可以用--user参数:
$ curl –user name:password example.com
或者只输入用户名,然后会有提示输入密码:
$ curl –user name example.com
若需要模拟客户端设备,需要用到user agent字段,服务器有可能根据这个字段返回不同的数据格式。比如iPhone4的User Agent是:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0. Mobile/8A293 Safari/6531.22.
那么使用curl可以这样模拟:
$ curl –user-agent “[User Agent]” [URL]
设置代理:
$ curl -x proxyserver.test.com: http://google.com
FTP服务器上传或下载文件:
列出文件或目录:
$ curl -u ftpuser:ftppass -O ftp://ftpserver/dir/
下载文件:
$ curl -u ftpuser:ftppass -O ftp://ftpserver/dir/file.html
上传文件myfile.log到服务器:
$ curl -u ftpuser:ftppass -T myfile.log ftp://ftpserver
同时上传多个文件:
$ curl -u ftpuser:ftppass -T “{file1, file2}” ftp://ftpserver
从表中输入获取内容保存到服务器指定文件中:
$ curl -u ftpuser:ftppass -T – ftp://ftpserver/myfile.log
上传或下载(保存)文件:
将文件下载到本地并命名为myfile.html
$ curl -o myfile.html http://example.com/file.html
将文件下载到本地而且不重新命名:
$ curl -O http://example.com/file.html
也可以使用>进行转向输出
同时获取多个文件:
$ curl -O URL1 -O URL2
-C选项可以对大文件使用断点续传功能:
若在下载完成前结束进程:
$ curl -O http://example.com/file.html
通过添加-C操作继续对文件进行下载,已经下载过的文件不会被重新下载:
$ curl -C - -O http://example.com/file.html
上传文件:
$ curl –form “fileupload=@filename.txt” http://example.com/dir
=========================================================================
python -m json.tool
使用curl后,API调用的输出可读性很差,JSON格式的数据都堆在一行,若希望将其格式成换行,可以使用python -m json.tool来缩进和组织JSON。需要使用管道机制,将JSON文件的输出作为输入,写入到python -m json.tool命令行。
$ curl http://example.com/api/getjson/ | python -m json.tool
=========================================================================
grep
grep能使用特定模式匹配(包括正则表达式)搜索文本。如果在另一条命令的输出中寻找特定的模式,grep会高亮显示相关的行。可以使用这条命令来搜索日志文件以及特定进程等:
$ cat mongod.log | grep “port ”
=========================================================================
ps
ps可以查看进程的各种状态信息,-e操作表示列出所有,-f选项表示列出详细信息,因此:
$ ps -ef
即可检查服务器运行的所有进程。更常用的是找到具体某个进程的信息,可以和grep连用:
$ ps -ef | gref “mongo”
=========================================================================
env
env用于列出所有的环境变量及为其赋值。在故障排除期间,可能会需要检查是否有错误的环境变量阻止应用程序启动。检查程序主机上设置的环境变量:
$ env
=========================================================================
top
top用于显示系统中各个进程的信息和资源占用情况,类似于Windows的任务管理器。使用该命令可以确定哪些进程正在运行,以及它们小号了多少内存和CPU。
按下C键可以查看启动红线标出的进程的详细启动命令:
=========================================================================
netstat
netstat用于显示网络状态信息。该命令可显示正在使用的网络端口及其传入连接。同样的,一般与grep连用:
$ netstat -tupln | grep
操作符说明:
-t -u (tcp, udp)只显示这两种协议的结果;
-p 显示PID或程序名称
-l 只显示监听端口
-n 不解析域名(只显示IP)
=========================================================================
ip address
用于显示应用程序的主机接口和IP地址。查看某接口的IP地址可以使用show。查看本机IP地址可以使用以下命令:
$ ip address show eth0
如果需要查看所有容器和主机的地址,可以使用以下命令:
$ ifconfig
=========================================================================
lsof
lsof(list open files)用于列出当前系统打开的文件。在Linux系统中,几乎任何和系统的交互都被视为一个文件。因此,如果应用程序写入文件或进行网络连接,lsof会把这个交互映射为一个文件。与netstat类似,可使用lsof检查侦听端口。需要注意的是,可能需要root权限才能查看到所有进程,尤其是当进程不是由当前用户运行的时候。
$ sudo lsof -i tcp:
操作符-i选择了所有ipv4/ipv6的进程。如果根据进程ID(PID)选择:
$ sudo lsof -p
可以查看该进程的所有信息。
=========================================================================
df
使用df命令显示空闲的磁盘空间(display free disk space)以排查磁盘空间问题。为了使结果可读性较好,使用-h操作:
$ df -h
即可获取磁盘空间信息,包括已用和未用等。
=========================================================================
du
也是用于查看使用空间的,但是与df命令不同的是du命令是对文件和目录磁盘使用的空间的查看,要获取有关哪些文件在目录中使用磁盘空间的更多详细信息,可以使用du命令。比如要获得总大小可用-s操作,加上-h可以使结果更可读:
$ sudo du -sh /mnt/*
以上命令是为了获取/mnt目录下所有目录或文件大小。
=========================================================================
id
该命令可以检查当前用户身份,包括UID(user ID), GID(group ID), groups信息。使用方法:
$ id
或
$ id user_name
=========================================================================
dig/nslookup
dig 命令是常用的域名查询工具,可以用来测试域名系统工作是否正常。域名服务器(DNS)有助于将 URL 解析为一组应用程序服务器。然而,你会发现有些 URL 不能被解析,这会导致应用程序的连接问题。
=========================================================================
iptables
iptables 用于阻止或允许 Linux 主机上的流量,用于 IP 包过滤器管理,类似于网络防火墙。此工具可阻止某些应用程序接收或发送请求。更具体地说,如果应用程序难以访问另一个端点,可能已被 iptables 拒绝流量访问该端点。查看iptables规则:
$ sudo iptables -S
=========================================================================
sestatus
通常会在企业管理的应用程序主机上使用 SELinux(一个 Linux 安全模块)。SELinux 对主机上运行的进程提供最低权限的访问,防止潜在的恶意进程访问系统上的重要文件。某些情况下,应用程序需要访问特定文件,但可能会发生错误。要检查 SELinux 是否阻止了应用程序,使用 tail 和 grep 在 /var/log/audit 日志记录中查找”denied”(被拒绝)的信息。否则,使用 sestatus 来检查是否启动了 SELinux。
=========================================================================
history
当你使用大量的命令进行测试和调试时,可能会忘记有用的命令。每个 shell 都有一个 history 命令的变体。它可显示自会话开始以来使用的命令的历史记录。可以使用 history 来记录用来排除应用程序故障的命令。history 命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。
$ history
该命令可以查看历史命令列表,使用!加指定命令的序号可以执行对应命令:
$ !
执行历史命令列表中序号为288的命令。
=========================================================================
设置自定义命令:
$ vim ~/.bashrc
在最后一行添加:
alias 命令别名='原命令'
例:
alias codedir='cd /mnt/codes'
这样在当前用户下,即可使用codedir命令访问/mnt/code文件夹(可能需要重新建立连接才行)
=========================================================================
参考:
https://mp.weixin.qq.com/s/pEwNyYPfZ18h5vUxA_TQsg
http://www.ruanyifeng.com/blog/2011/09/curl.html
系统管理员常用的Linux命令的更多相关文章
- 每天一个linux命令(61):vi命令 /企业常用的linux命令清单
vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是一般模式.编辑模式与指令列命令模式. 这三种模式的作用分别是: 一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式) ...
- 工作中常用的Linux命令:mkdir命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...
- 工作中常用的Linux命令:crontab命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...
- 工作中常用的Linux命令:ipcs/ipcrm命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...
- 工作中常用的Linux命令:find命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6056571.html (转载请注明出处) 1.命令格式 find [-H] [-L] [-P] [-D deb ...
- 开发过程中常用的Linux命令
做Java开发好几年了,部署JavaWeb到服务器上,一般都选择Linux,Linux作为服务器真是不二之选,高性能,只要熟悉Linux,操作快捷,效率很高. 总结一下工作中常用的Linux命令备忘: ...
- 初学者常用的LINUX命令
测试初学者常用的LINUX命令 一.常用管理命令:1. shutdown -h now 关机命令2. shutdown -r now (reboot) 立即重启命令 3. clear 清屏命令 4. ...
- java web项目在linux部署、启动,查看系统配置常用的linux命令总结
本文为博主原创,未经允许不得转载: 以下为在工作中常用的linux命令进行了总结,主要在项目安装及启动,及编辑部署文件时应用较多1.gz文件是一种压缩文件. 以·tar.gz为扩展名的是一种压缩文件, ...
- 20条最最常用的Linux命令讲解
玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了.当然你也可以在使用时去找一下 ...
随机推荐
- dp乱写2:论dp在不在dp中(但在dp范畴)内的应用
最近正儿八经的学习了dp,有一些题目非常明显看出来就是dp了比如说:过河卒.方格取数.导弹拦截.加分二叉树.炮兵阵地更加明显的还有:采药.装箱问题.过河.金明的预算方案.今天来谈谈dp的dp在不在dp ...
- 51nod 1577 异或凑数
思路真的是挺巧妙的. 让我惊叹,原来线性基还能这么做?!?! 好吧,这种取若干个数异或凑数的题目怎么能少的了线性基呢? 但是,问题集中在于怎么快速提取一个区间的线性基 暴力n^2 线段树维护线性基?分 ...
- RabbitMQ之集群搭建
1.RabbitMQ集群模式RabbitMQ集群中节点包括内存节点(RAM).磁盘节点(Disk,消息持久化),集群中至少有一个Disk节点. 2.普通模式(默认) 对于普通模式,集群中 ...
- 理解JVM GC
理解JVM GC对于我们把控Java应用有很大的帮助.下面我从运维角度,把网上的JVM相关的资料整理如下,以加深对JVM GC的理解.如有错误的地方,请看官指正. JVM内存使用分类 JVM的内存分区 ...
- sqlserver收缩日志的几种方式
sqlserver收缩日志的几种方式 [sql] --参考 压缩日志及数据库文件大小 /*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可 ...
- OpenStack 镜像服务 Glance部署(六)
Glance介绍 创建虚拟机我们需要有glance的支持,因为glance是提供镜像的服务. Glance有两个比较重要的服务: Glance-api:接受云系统镜像的构建.删除.读取请求 Glanc ...
- java8 使用 lamda 表达式 完成 map reduce
java8支持了函数编程,可以让java代码更简洁和易读. 传统 for 循环方式: List<String> list = Arrays.asList("C",&qu ...
- uva 10625 Board Wrapping
https://vjudge.net/problem/UVA-10652 给出n个长方形,用一个面积尽量小的凸多边形把他们围起来 求木板占包装面积的百分比 输入给出长方形的中心坐标,长,宽,以及长方形 ...
- Java入门系列(六)方法
方法返回多个值 使用集合类 /** * 方法1:使用集合类 (Map以外的集合类也可以随意使用) * 目标:返回一个数组的最大值和最小值 */ public Map<String, Intege ...
- 这两天自己模仿写的一个Asp.Net的显示分页方法 附加实体转换和存储过程
之前自己一直用Aspnetpager控件来显示项目中的分页,但是每次都要拖一个aspnetpager的控件进去,感觉很不舒服,因为现在自己写的webform都不用服务器控件了,所以自己仿照aspnet ...