Linux常用命令

terminal

使用文字界面来设定,对于了解Linux有一定的帮住,平时不免接触,常用命令总结如下。

系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uname -a # 查看内核,操作系统,CPU信息 
head -n 1 /etc/issue # 查看操作系统版本
env # 查看环境变量

# centos版本查看
cat /etc/redhat-release

# cpu
cat /proc/cpuinfo

# 内存
cat /proc/meminfo

# 修改时区
timedatectl set-timezone Asia/Shanghai

进程状态

1
2
# ps结合grep查看某进程状态
$ ps aux|grep xxx

ps aux输出格式:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER:| 行程拥有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的记忆体使用率

VSZ: 占用的虚拟记忆体大小

RSS: 占用的记忆体大小

TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态,linux的进程有5种状态:

D 不可中断 uninterruptible sleep (usually IO)

R 运行 runnable (on run queue)

S 中断 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).

START: 行程开始时间

TIME: 执行的时间

COMMAND:所执行的指令

ps命令能够支持的系统类型相当的多

账户

1
2
3
4
5
# 修改当前用户密码
$ passwd

# Shows information about the users currently on the machine, and their processes.
$ w

档案与目录管理

基本属性

1
2
3
4
5
6
7
8
9
10
# 此案时文件的属性以及文件所属的用户和组
$ ls -l

# 更改文件属组
$ chgrp [-R] 属组名文件名

# chown:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

文件与目录管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 删除文件
$ rm filename

# 删除文件夹
$ rm -rf dir

# 查找并删除
$ find . -name test | xargs rm -rf

# 复制
$ cp vsftpd.conf vsftpd.conf.bak

# 文件重命名
$ mv aa.txt aaa.txt

# 当前文件夹下所有文件移动到当前目录
$ mv /temp/deploy/* .

# 单列,长格式,显示所有文件,包含隐藏文件及目录
$ ls -Al

# 列出第101-200文件,-n为按数字排序
$ ls | sort -n | head -200 | tail -100

ln

ln命令用来为文件创建连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用”-s”选项。

ln -s /usr/mengqc/mub1 /usr/www/aaa

unzip

1
2
# 解压zip包到当前目录下
$ unzip test.zip

vi

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式

用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到插入模式,以输入字符。
x 删除当前光标所在处的字符。
切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件

服务

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

1
2
3
4
5
6
7
8
chkconfig --list        #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list #列出系统所有的服务启动情况
chkconfig --list mysqld #列出mysqld服务设置情况
chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on #开启自动启动服务,设定mysqld在各等级为on,“各等级”包括2、3、4、5等级

service命令常被用于运行初始化脚本,通常所有的系统级初始化脚本被存储于/etc/init.d目录下.常用 命令如下

1
2
3
4
5
$ service SCRIPT-Name stop
$ service SCRIPT-Name start
$ service SCRIPT-Name status
$ service SCRIPT-Name restart

http

1
2
3
4
5
$ curl http://1991421.cn >> test.html

# 让curl发送cookie,支持指定文件内容作为cookie
$ curl --cookie "name=xxx" https://1991421.cn
$ curl -b cookies.txt https://1991421.cn

ssh

1
2
# 内网服务穿透,本地端口访问
ssh -p 22 -L <localPort>:localhost:<serverPort> root@<ip>

查找

1
2
3
# 在环境变量$PATH设置的目录里查找python指令位置
$ which python

环境

  • 显示环境变量NODE_ENV
    1
    $ echo $NODE_ENV
  • 设置环境变量NODE_ENV
    1
    $ export NODE_ENV="production"
  • 显示所有环境变量
    1
    $ env
  • 删除环境变量NODE_ENV
    1
    $ unset NODE_ENV
    说明,永久生效方法为在/etc/profile中添加export NODE_ENV="production",source /etc/profile立即生效

yum

  • 安装指定软件 yum install <package_name>
  • 删除指定软件 yum remove <package_name>
  • 查找软件包 yum search <keyword>

磁盘与硬件管理

mount

1
2
# mount  /dev/fd0 /mnt/floppy     <=軟碟(windows 系統檔) 

说明这种方式,立即生效,但是主机重启后会失效,永久生效的方法为在/etc/rx.local添加mount /dev/fd0 /mnt/floppy

压缩指令

1
2
3
4
5
# 压缩
$ tar zcvf FileName.tar.gz DirName

# 解压
$ tar zxvf FileName.tar.gz

硬件·内核·Shell·监测

-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )

1
2
$ lsof -i:4000

kill

1
2
# 杀死指定进程
$ kill -9 3840

top

实时动态查看系统的整体运行情况

free

显示内存情况

1
$ free -m // mb为单位显示内存情况 

df

查看磁盘空间情况

1
$ df -h // 以kb以上单位显示磁盘情况

网络管理

ifconfig

配置和显示Linux系统网卡的网络参数

1
2
3
4
$ ifconfig

# 活跃状态的网络接口
$ ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active'

nslookup

常用域名查询工具,就是查DNS信息用的命令

1
$ nslookup 1991421.cn

telnet

网络端口联通性,如果端口服务开启,则会话不会终端,需要ctrl z结束,如果服务没有开启,则会提醒telnet: Unable to connect to remote host

1
$ telnet 127.0.0.1 8888

其它命令

tail

1
2
# 查询文件末尾N行,实时打印
$ tail -f a.txt

rsync

1
2
# 排除同步文件使用exclude
rsync -az -vv -e 'ssh -p 22' . <user>@<host>:<remoteSrc> --exclude="node_modules" --exclude=".idea" --exclude=".git"

常见问题

免密登陆

  1. 客户机生成公钥

    1
    2
    $ cd ~/.ssh
    $ ssh-keygen
  2. 目标机器添加authorized_key

    1
    $ vi  ~/.ssh/authorized_keys

    拷贝客户机的公钥id_rsa.pub内容到上述文件中。

    永远记住,私钥是私人的,自己的,公钥可以提供出去用来解密。

  3. 退出重新登陆即可

Host key verification failed.

  1. 查看~/.ssh/known_hosts文件,查看是否有目标地址的记录,如果有删除,如果没有,不需要操作
  2. 终端SSH连接目标服务器,可能会提示指纹变动,重写等信息,输入yes,继续操作,确认可以正常登录访问后,即解决。

相关网站