Linux常用命令
- 查看系统当前登录用户状态
w
: 可以看到登录用户的信息与cpu占用率。last
:查看最近登录的用户信息。
-
useradd与adduser添加用户
注意: 这两条命令是一样的,参数也是一样的,adduser是useradd的一个perl脚本,作用是提供交人机互式操作。 -
参数说明
-
-c
:加上备注文字,备注文字保存在passwd的备注栏中。 -
-d
:指定用户登入时的主目录,替换系统默认值/home/<用户名> -
-D
:变更预设值。 -
-e
:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。 -
-f
:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1. -
-g
:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。 -
-G
:指定用户所属的附加群组。 -
-m
:自动建立用户的登入目录。 -
-M
:不要自动建立用户的登入目录。 -
-n
:取消建立以用户名称为名的群组。 -
-r
:建立系统账号。 -
-s
:指定用户登入后所使用的shell。默认值为/bin/bash。 -
-u
:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。
例:
useradd admin -u 512 -d /home/em -g root -c "测试" -e 14/10/2018 -n
: 创建一个名为admin的用户,设置用户id为512,替换默认/home/admin目录为/home/em,并且添加此用户为root组用户,添加备注,设置账号失效日期,取消建立以用户名称为名的群组。 如图1-11所示passwd admin
:给admin设置密码为123456。ssh登录新用户
: 如图1-12groups
: 查看当前用户用户组 如图1-13所示进入根目录下etc目录中,查看passwd文件,里面包含了用户信息
: 如图1-14所示
admin:x:512:0:测试:/home/em:/bin/bash
说明:从左到右数据依此为:用户名:密码:用户id:用户组id:备注:用户主目录:shell命令主目录。
- 删除用户userdel
userdel username
: 删除用户userdel -f username
: 删除用户账号与相关的文件
- 切换用户
su username
:需要输入切换用户的密码。
-
Part Two 文件操作相关
- 查看文件
- ls命令及参数
a
: 显示所有文件及目录 (包括以.开头的隐藏文件或文件夹)-l
: 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出-r
: 将文件以相反次序显示(原定依英文字母次序)-t
: 将文件依建立时间之先后次序列出-A
: 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)-F
: 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"-R
: 若目录下有文件,则以下之文件亦皆依序列出(递归文件夹显示所有文件)
- 查看文件内容
cat 文件名
:显示文件内容。cat -n 文件名
: 显示行号。cat 文件 | head -3
: 查看文件前三行。cat 文件1 文件2
:将两个文件连接起来输出显示。head -3 文件
: 查看文件前三行。tail -5 文件
: 查看文件后5行。less 文件
: 分页查看文件,less分页内容少。more 文件
: 分页查看文件,more分页内容多。
- 创建空文件
touch
: touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。显示时间记录可用ls -l查看文件信息。touch a 文件
: 改变档案的读取时间记录。touch m 文件
: 改变档案的修改时间记录。- 创建空文件夹
mkdir folder
: 创建名为folder的空文件夹。mkdir -p a/b
: 创建二级目录,a文件夹下有b文件夹。
- 删除文件与文件夹
rm
:删除文件与文件夹。-i
: 删除前逐一询问确认。-f
: 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r
:将目录及以下之档案亦逐一删除。rm -f 文件
:删除文件且以yes跳过询问操作。rm -rf 文件夹
:删除文件夹及文件夹内的文件。
- 复制文件
- cp复制
-a
:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。-d
:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。-f
:覆盖已经存在的目标文件而不给出提示。-i
:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。-p
:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。-r
:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。-l
:不复制文件,只是生成链接文件。cp 文件 路径/新文件名
:复制文件到新路径并重命名。例:cp a.py code/aa.py
cp 文件 路径
:复制文件到其他路径,不更改文件名字。例:cp b.py code
cp 文件夹 -r 路径
:复制文件夹所有内容到新的路径,不会复制文件夹本身。cp 文件夹 -r 路径/新文件夹名字
: 复制文件夹内容到路径下的新文件夹中。- mv为文件或目录改名、或将文件或目录移入其它位置。
-i
: 若指定目录已有同名文件,则先询问是否覆盖旧文件。-f
: 在mv操作要覆盖某已有的目标文件时不给任何指示。mv 文件 文件
:将文件1改名为文件2。mv 文件 文件夹
:将文件移动到文件夹。mv 文件夹 文件夹
:目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名。
- 更改文件权限
- chmod
u
: 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。+
: 表示增加权限、- 表示取消权限、= 表示唯一设定权限。r
: 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。-c
: 若该文件权限确实已经更改,才显示其更改动作-f
: 若该文件权限无法被更改也不要显示错误讯息-v
: 显示权限变更的详细资料-R
: 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
drwxr-xr-x 2 root root 4096 Oct 13 15:49 abc
-rwxr--r-- 1 root root 1158 Oct 10 15:04 a.py
-rwxr--r-- 1 root root 440 Oct 10 15:07 b.py
-rw-r--r-- 1 root root 56 Oct 13 15:03 code
说明:d表示文件夹,
-rwxr--r--
意思是,当前用户可执行操作为rwx
,可读写执行,同组用户可对该文件执行r--
读操作,其他用户可对改文件执行r--
读操作。
- 新建一个c.py文件
用 ll 命令查看c.py的权限为 -rwxr--r--
注: ll = ls -l
-rw-r--r-- 1 root root 0 Oct 13 16:02 c.py
- chmod修改权限方法一
chmod u+x c.py
:修改c.py文件为当前用户的可执行文件。
-rwxr--r-- 1 root root 0 Oct 13 16:02 c.py
- 二进制修改权限
chmod 754 a.py
:修改c.py为当前用户和同组可执行文件。
-rwxr-xr-- 1 root root 0 Oct 13 16:02 c.py
说明:7代表
rwx
,5代表r-x
,4代表r--
,如果将三位权限看成三位二进制,为0就是没有权限,为1就是有权限,那rwx
就是二进制的111,r-x
就是二进制的101,r--
就是二进制的100,所以权限754就是给c.py添加当前用户和同组用户的可执行文件。
- chown 更改文件的所有者
user
: 新的文件拥有者的使用者 IDgroup
: 新的文件拥有者的使用者组(group)chown user 文件
:改变文件的所有者chown root:user 文件
:将文件拥有着设置为root组的用户user。chown -R root:admin 文件夹
:将文件夹所有文件所有者设置为root下admin用户。
-
Part Three 其他Linux命令
clear
:清屏。logout/exit
:退出登录。cd
:切换目录。cd ~
回到根目录pwd
:查看当前工作目录。man 命令
:获得某个命令的帮助文档。命令 --help
:获得命令的参数说明。wget 网址
:下载网址的内容。wall 内容
:给所有线上设置mesg y
的用户发消息,设置为mesg n
的用户不会收到,注意root用户发的消息不能拒绝。wall 加 某个用户就是对某个用户发消息,不加参数就是给所有人发。history
:查看所有历史命令。history -c
:清除历史命令。history -d 命令编号
:删除某条历史命令。!+历史命令编号
:执行某条命令。date
:查看当前时间。cal
:查看日历。cal 12 2018
:查看某年某月的日历。cal 2018
:查看某年日历。alias 别名="命令"
:给命令起别名,可以通过别名来执行命令。例:alias ca="cal"
unalias 别名
: 撤销别名。wc 文件
:统计文件内容行数,字节数,单词个数。wc -l 文件
:只看文件内容行数。sort a.txt | uniq |wc -l
:排序文件去重再查看行数。sort
排序,uniq
去重。diff 文件1 文件2
:比较两个文件的不同的地方。gzip/gunzip
:压缩/解压缩文件。tar -xvf
:解归档。ln -s /a/b/c/d.txt haha
:创建一个haha的软链接可以直接访问d.txt文件,如果不加 -s 就是硬链接,相当于文件的引用,只要引用数不为0 ,文件就会一直存在。- echo输出语句
echo 内容 > 文件
:再次写入会覆盖上次内容。echo 内容 >> 文件
: 追加写入。echo 内容 > 文件1 2>文件2
:错误输出重定向,正确的结果输入文件1,出错就输出文件2。
a=10
b=3
echo $a
10
echo $[a+b]
13
-
Part Four 进程
- ps
-w
: 显示加宽可以显示较多的资讯-au
: 显示较详细的资讯rss
: 占用的记忆体大小r
: 正在执行中s
: 静止状态t
: 暂停执行n
: 低优先序的行程ps -ef
:显示所有的进程- 关闭进程
kill 进程编号
:关闭进程kill -9 进程编号
:强制杀死某个进程ps -ef | grep httpd | grep -v grep
---进程不包含搜索操作本身这条进程
- top
top
:实时显示进程的状态
中止运行中的进程ctrl+c
暂停进程并置于后台-ctrl+z
redis-server &
:服务名后面加&放在后台运行。jobs
---查看后台进程bg %编号
--- 让后台暂停的进程继续再后台运行,编号为后台进程编号fg %编号
--- 让后台进程再前台运行
- netstat
netstat -nap | grep 80
:查某个端口被谁占用。
参考
-
Part Five Linux启动过程与目录说明
-
启动过程
-
内核的引导。
-
运行 init。
-
系统初始化。
-
建立终端 。
-
用户登录系统。
-
Linux系统有7个运行级别(runlevel)
-
运行级别0
:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 -
运行级别1
:单用户工作状态,root权限,用于系统维护,禁止远程登陆 -
运行级别2
:多用户状态(没有NFS) -
运行级别3
:完全的多用户状态(有NFS),登陆后进入控制台命令行模式 -
运行级别4
:系统未使用,保留 -
运行级别5
:X11控制台,登陆后进入图形GUI模式 -
运行级别6
:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动 -
shutdown
: 关机 -
shutdown -c
:取消关机 -
init 0
:关机且不发送通知 -
init 6
:重启 -
rebot
:重启
-
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你的机器: -
/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
:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
-
Part Six 进程管道通信与短路运算
- 管道通信语法
命令1 | 命令2
:命令1的输出作为命令2的输入。ls | grep codes
:查询codes目录是否存在。- 短路运算
命令1 || 命令2 || 命令3
:从左至右依此执行,谁正确就执行谁,后面不再执行。命令1 && 命令2 && 命令3
:从左到右,依此执行。
-
Part Seven linux安装软件
- yum安装
yum search git
---查找软件yum install git
--- 安装软件 yun -y install git ---跳过yes步骤,以yes来安装yum remove git
--- 卸载软件yum info git
--- 查看软件信息yum update 软件名字
更新软件yum update
----- 更新所有的软件yum list installed
--- 列出已经安装的文件
- code安装以python3环境为准
step 1
:下载源代码 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgzstep 2
:解压缩gunzip Python-3.7.0.tgz
step 3
:解归档tar -xvf Python-3.7.0.tar
step 4
:安装底层依赖库yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
step 5
:进到解归档后的文件夹路径cd Python-3.7.0
step 6
:执行可执行文件./configure --prefix=/usr/local/python37 --enable-optimizations
step 7
:构建安装make && make install
源代码构建安装step 8
:配置PATH环境变量export PATH=$PATH:/usr/local/python37/bin
step 9
:注册软链接(符号链接)ln -s /usr/local/python37/bin/python/3 /usr/bin/python3
-
Part Eight web服务器配置与防火墙
- nginx
先yum安装nginx服务器,命令
yum install nginx
-
systemctl start 服务名字
--- 启动服务 -
systemctl stop 服务名字
停止服务 ---- -
systemctl restart 服务名字
重复服务 ---- -
systemctl status 服务名字
查看信息 ---- -
systemctl enable 服务名字
---- 开机自启 -
systemctl disable 服务名字
---- 关闭自启 -
journalctl -xe
---查看启动服务失败的错误原因 -
systemctl status 服务.service
--- 查看失败错误原因 -
httpd---Apache
yum安装httpd服务器,
yum install nginx
- 注意 : 两个服务器默认使用的是80端口,要想同时使用必须修改其中一个端口号。修改方法,进入/etc目录下找到安装文件夹/nginx,修改nginx.conf文件中listen。参考
- 防火墙
阿里云服务器自带防火墙,我们可以不使用它而自己配置,配之前需要关闭阿里云的防火墙。关闭阿里云的防火墙-----打开安全组规则,设置端口为1-65535,打开全部端口。
Linux自带防火墙firewalld
- 配置firewalld防火墙
systemctl start firewalld
: 启动防火墙服务firewalld-cmd --add-service = 服务
: ---添加服务 配置防火墙---firewalld-cmd --add-port=80/tcp
:---打开端口firewalld-cmd --permanent --add-port=80/tcp
: ---永久打开端口firewalld-cmd --query-port=443/tcp
: ---查询端口是否打开firewalld-cmd --query-service=ssh
:---查询是否有某个服务firewalld-cmd --remove-port=443/tcp
:---删除端口
firewalld默认打开22端口用于ssh连接,所以要用什么服务,就开一个端口,并且设置这个服务默认使用端口为开的端口。
-
Part Nine vim编辑器
- 使用方法
vim 文件
:进入命令模式,命令模式下按shift + 两次z
或shift + 冒号
进入末行模式,在末行模式下输入wq
保存退出,q
退出,wq!
是强制保存退出,按i
进入编辑模式,按Esc
退出编辑模式。- 设置编辑模式下的格式
vim .vimrc
:.vimrc
文件是vim的配置文件
set nu --- 设置行号显示
syntax on --- 设置语法高亮显示
set tabstop =4 --- 设置一个tab为4个空格
map <F2> gg99999dd --- 设置功能键,按F2删除所有内容
inoremap _main if __name__ == '__main__': --- 设置快捷键,输入_main快捷输入
inoremap _# #!/usr/bin/python3 --- 设置快捷键,输入_#快捷输入#!/usr/bin/python3
-
命令模式下:
-
0
:--光标移动到当前行最开始 -
$
:--光标移动到当前行最末尾 -
h
: --光标向左移动 -
l
: --光标向右移动 -
k
:--光标向上移动 -
``j```: --光标向下移动
-
gg
--光标移到最开始 -
G
: --光标移动到最末尾 -
nG
:--光标移动到第几行 == ngg -
yy
: --复制光标当前行 -
nyy
:--复制光标当前行到下面n行 -
p
: --粘贴 -
dd
:--删除光标当前行 -
ndd
: --删除光标下n行包含当前光标行 -
ctrl+e
: --下翻一行 -
ctrl+y
:--上翻一行 -
ctrl+f
: --向前翻页 -
ctrl+b
:--向后翻页 -
u
:--撤销操所 -
ctrl+r
: --恢复操作 -
ctrl+x ctrl+o
:--代码提示 -
/word
:-- 查找当前光标下内容中word这个词 -
?word
: --查找当前光标上内容中word这个词 -
vim -d 文件1 文件2
--比较两个文件的区别 -
末行模式下:
-
:n1,n2s/world1/world2/gice
--- n1行到n2行进行替换 -
:1,$s/world1/world2/gice
--全文替换world1为world2
--g
:全局模式,正则表达式的全局匹配i
忽略大小写,c
每次替换都要确认 ,-e
允许错误,静默处理,忽略错误 -
:w
: --保存 -
:q
: --退出 -
:set nu
: --设置行号 -
:set ts =4
: --设置tab为4个空格 -
:set autoindent
:--自动缩进
如果vim打开了多个文件,可以在末行模式下通过
:b<编号>
切换到其他文件:ls
查看打开文件编号
- 打开多个文件:
:vs anotherfile
垂直拆分两个窗户显示不同文件,两次ctrl+w 切换光标到另一个文件:sp anotherfile
水平拆分:wqa
: --退出全部窗口:map <F1> gg999999dd
---映射快捷键 删除所有(命令模式下的映射):inoremap _main if __name__ == '__main__':
:---输入模式下的映射 nore---非递归 避免_main死循环
改配置
vim .vimrc
--- 必须叫.vimrc这个名字
-
Part Else 远程连接与拷贝
-
远程连接
-
ssh root@112.74.164.93
:远程连接用户名为root,主机为112.74.164.93的服务器。 -
远程拷贝
-
scp 文件1 root@112.74.164.93:/root/a.py
--将文件1拷贝到ip93的root目录下并且名为a.py -
scp root@ip1+绝对路径 root@ip2+绝对路径
---将一台机器的文件 传到另一个机器 -
sftp root@112.74.164.93
---ftp远程下载
- python配置
python 代码加
#!/usr/bin/python3
然后再修改.py文件为可执行权限,再./文件执行python文件,如./a.py
即可执行,但前提是将python的安装文件中的执行程序软连接到/usr/bin/python3
目录下。
- Linux向windows互输文件
xshll 与 xftp的传输,点击圈的按钮。