-
Part One 用户命令
- who相关命令
who: 显示当前登录用户 如图1-1所示who am i: 显示当前登录用户信息 如图1-2所示whoami: 显示当前登录用户名 如图1-3所示who -q: 统计当前登录用户个数和显示用户名 如图1-4所示who -u: 显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。 如图1-5所示who -H: 显示各栏信息 如图1-6所示who -m: 等同于 who am i 如图1-7所示who -w: 显示用户的信息状态栏 如图1-8所示who -H -l: 显示用户登录来源 如图1-9所示who -T -H: 显示终端属性 如图1-10所示
- 查看系统当前登录用户状态
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.pycp 文件 路径:复制文件到其他路径,不更改文件名字。例:cp b.py codecp 文件夹 -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.tgzstep 3:解归档tar -xvf Python-3.7.0.tarstep 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-develstep 5:进到解归档后的文件夹路径cd Python-3.7.0step 6:执行可执行文件./configure --prefix=/usr/local/python37 --enable-optimizationsstep 7:构建安装make && make install源代码构建安装step 8:配置PATH环境变量export PATH=$PATH:/usr/local/python37/binstep 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的传输,点击圈的按钮。
