常用Linux命令

文件操作相关


chmod

chmod有两种操作方式,
一种为普通授权法:

1
2
3
4
chmod +x a.txt  
#给a.txt可执行的权限
chmod +r a.txt
#给a.txt可读的权限

文件权限,’r’ 代表可读(4),’w’代表可写(2), ‘x’代表可执行(1)

上面括号内的数字 代表 “8421法”,即第二种操作方式。

1
2
chmod 777 a.txt  
#表示给a.txt所有权限

关于文件的权限信息说明:

-r-xr-xr-x 1 yubo yubo 342 May 27 22:06 hello.sh*

前面的 “-r-xr-xr-x” 即对应文件的权限信息。

其中,第一位是’-‘ 这个表示文件, 如果是’d’就表示文件夹;

后面分为三组,分别表示 “拥有者的权限”,“拥有者所在的组、组员的权限”,“其他用户的权限”;

每一组的权限,都是三位,分别代表 读写和执行的权限,所以,如果三个权限都有,就稳定为 “rwx”。

对上述文件,修改,使文件所有者有 所有权限:

1
2
3
chmod 755 hello.sh
$ll
$-rwxr-xr-x 1 yubo yubo 342 May 27 22:06 hello.sh*

[Linux]创建新用户及用户权限 - 知乎 (zhihu.com)

sudo

sudo 命令 以系统管理者的身份执行,也就是说,经由sudo执行的命令就好像 是 root亲自执行。
需要输入自己的账户密码。
使用权限: 在 /etc/sudoers 中出现的使用者

1
2
#以yao用户身份编辑 home目录下的index.html文件
$ sudo -u yao vi ~www/index.html

编辑文件

命令: vi 和 vim

操作: vi + 文件名

进入后,操作界面有三种模式:命令模式、插入模式和底行模式

三种模式相关定义:

命令模式

  • 刚进入文件就是命令模式,通过方向键控制光标位置,

  • 使用命令”dd”删除当前整行

  • 使用命令”/字段”进行查找

  • 按”i”在光标所在字符前开始插入

  • 按”a”在光标所在字符后开始插入

  • 按”o”在光标所在行的下面另起一新行插入

  • 按”:”进入底行模式

插入模式

  • 此时可以对文件内容进行编辑,左下角会显示 “– 插入 –””

  • 按”ESC”进入底行模式

  • 底行模式

  • 退出编辑 :q

  • 强制退出 :q!

  • 保存并退出 :wq

操作步骤示例

  1. 保存并退出编辑 “ESC” -> 输入”:” -> 输入”wq”,回车

  2. 取消操作:按”ESC” -> 输入”:” -> 输入”q!”,回车

补充

1
2
3
4
vim +10 filename.txt 
#打开文件并跳到第10行
vim -R /etc/passwd
#以只读模式打开文件

文件创建查看删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#创建文件
touch a.txt
#移动文件
mv [选项] 文件名 [目标文件名|目标路径]
#复制文件
cp [选项] 源文件 目标文件
#复制文件夹
cp -r dir1 dir2
#删文件 -f 忽略警告信息 -i 删除前先询问
rm [选项] 文件
#删除文件夹
rm -r 目录名

#重命名
rename libfmt.a libfmt.a.bak libfmt.a

diff

显示两个文件的差异

1
diff -c file1 file2

压缩/解压文件

tar[选项][文件]

1
2
3
4
#打包并压缩文件,压缩包后缀为 .tar.gz
tar -czvf *.tar.gz
#解压并展开压缩包,压缩包后缀为 .tar.gz
tar -xzvf *.tar.gz

具体参数参考如下:

参数 作用
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或者解压
-j 用bip2压缩或者解压
-v 显示压缩或者解压的过程
-f 目标文件名
-p 保留原始的权限和属性
-P 使用绝对路径来压缩
-C 指定解压到的目录

查找文件

find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
find /bin -name 'a*' 
#查找bin目录下所有以a开头的文件或者目录

find . -name '*.c'
#将当前目录及其子目录下,所有.c文件找出来

find . -type f
#将当前目录及其子目录下的所有一般文件列出

find . -ctime -20
#将当前目录及其子目录下 所有最近20天更新过的文件列出

find . -type f -perm 664 -exec ls -l {} \;
#将当前目录及其子目录下, 所有权限为664的文件,列出
#解释:这个命令可以分为两部分看,前半部分,到 -perm 664表示是查看文件的信息的权限;
#后半部分,表示从执行ls -l 命令获取到的信息中进行筛选。

find工具笔记

whereis

将和ls命令相关的文件都找出来 参数是某个命令(验证过 cmake ssh等)

1
whereis ls

which

which指令 会在环境变量 $PATH 设置的目录里查找符合条件的文件

1
which is bash

grep

grep [选项] [文件]

1
2
3
4
5
#在文件中查找字符串(不区分大小写)
grep -i "the" demo_file

#在一个文件夹中递归查询包括指定字符串的文件
grep -r "remesh" *
参数 作用
-b 将可执行文件(binary) 当作文本文件(txt)来搜索
-c 仅显示查找到的次数
-i 忽略大小写
-n 显示行号
-v 反向选择–仅列出没有“关键词”的行

下载文件

wget

1
2
3
4
5
#该命令用于从网上下载内容
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

#下载文件并以指定的文件名保存文件
wget -O nagios.tar.gz http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

ftp

1
2
ftp IP/hostname //访问ftp服务器
mls *.html - //显示远程主机上文件列表

scp

通过scp命令在多台服务器中相互复制、传输文件(secure copy的缩写)
scp 是linux系统下基于ssh登录进行安全的远程文件拷贝命令
scp是加密的, rcp是不加密的, scp是rcp的加强版本

1
2
scp /opt/data.txt  192.168.1.101:/opt/    
#将本地opt目录下的data文件发送到192.168.1.101服务器的opt目录下

网络操作

防火墙操作

1
2
3
4
5
6
service iptables status      //查看iptables服务的状态
service iptables start //开启iptables服务
service iptables stop //停止iptables服务
service iptables restart //重启iptables服务
chkconfig iptables off //关闭iptables服务的开机自启动
chkconfig iptables on //开启iptables服务的开机自启动

查看网络信息

1
2
3
4
5
6
7
8
9
ifconfig
#查看与IP的连接情况
ping IP
#查看当前系统端口
netstat -an
#查看指定端口
netstat -an | grep 8080
#远程主机,需要输入用户名密码
ssh IP

lsof

列出当前系统打开的文件描述符(list openfiles)

1
2
3
4
5
6
7
8
9
10
11
12
#仅显示TCP连接(同理UDP)
lsof -iTCP
#显示与指定端口相关的网络信息
lsof -i:3322
#显示指定到指定主机的连接
lsof -i@192.168.6.25
#加端口
lsof -i@192.168.6.25:23386

#找出监听端口
lsof -i -sTCP:LISTEN
lsof -i | grep -i LISTEN

Linux 命令神器:lsof

修改IP

修改网络配置文件,文件地址为

/etc/sysconfig/network-scripts/ifcfg-eth0

主要对应以下配置:

1
2
3
4
5
6
7
8
9
TYPE=Ethernet               //网络类型
BOOTPROTO=static //静态IP
DEVICE=ens00 //网卡名
IPADDR=192.168.1.100 //设置的IP
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.1.1 //网关
DNS1=192.168.1.1 //DNS
DNS2=8.8.8.8 //备用DNS
ONBOOT=yes //系统启动时启动此设置

修改以后,使用命令重启网卡

1
service network restart

配置映射

修改文件 vi /etc/hosts
在文件最后添加映射地址,示例如下:

1
2
3
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3

配置好以后保存退出,输入命令:ping node1 ,可见实际 ping 的是 192.168.1.101。

tcpdump

抓包分析工具
使用tcpdump抓包

      

查看系统信息


1
2
3
4
#查看操作系统版本信息
cat /proc/version
#显示一些重要的系统信息,例如:内核名称、主机名、内核版本号、处理器类型之类信息
uname -a

进程信息

1
2
3
4
5
6
#查看所有正在运行的进程
ps -ef
#杀死pid进程
kill pid
#强制杀死该进程
kill -9 pid

service

1
2
3
4
5
#service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d 文件中
#该命令可以直接运行脚本,而不需要加上路径
service ssh status #查看服务状态
service --status-all #查看所有服务状态
service ssh restart #重启服务

free

1
2
3
#这个命令用于显示系统当前内存的使用情况,包括已用内存、可用内存和交换内存的情况
free -g #以g为单位输出内存的使用量,-g为GB,-m为MB,-k为KB,-b为字节
free -t #查看所有内存的汇总

top

显示当前系统中占用资源最多的一些进程,shift+m 按照内存大小进行排序

df

1
2
#显示文件系统的磁盘使用情况
df -h

环境变量

1
2
3
4
5
6
7
8
#查看当前环境变量
echo $PATH

#设置环境变量值
export PATH=

#添加一个路径
export PATH=$PATH:newdir

watch

用于动态查看命令执行的结果
比如,如果想要每隔一秒高亮显示 网络连接数的变化情况,则:

1
watch -n 1 -d netstat -ant

每隔一秒高亮显示 http 连接数的变化情况

1
watch -n 1 -d 'pstree | grep  http'

vmstat

常用系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析CPU上下文切换和中断的次数

其它


创建新用户

root权限下,使用 useradd 命令进行

1
2
3
useradd -m daidaini -c "test creating a new user"
#指定密码
passwd daidaini ***

nohup

no hang up 的缩写,不要挂起的意思,这个是常用的后台启动程序的方法。

在交互环境下,我们可以直接将一些信息输出到当前界面;
那后台启动的程序,我们就会通常使用下边的命令,指定将信息输出到某个文件

1
nohup command > some.file 2>&1 &

命令解释

  • 1 表示标准输出
  • 2 表示文件标准错误输出
  • 2>1& 表示将两者合并,合并到的文件为some.file

常见命令