一、目录
/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你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/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:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
二、语法
命令 空格 参数 空格 【文件或路径】需要处理的内容
rm -rf / tmp/*
ls -la /home
结婚 -没车没房 女的就行
结婚 -有车有房 白富美
-
文件夹创建
mkdir oldboy #递归创建a/b c/d mkdir -p a/b c/d #递归创建test/a,b,c,d四个目录 mkdir -p test/{a,b,c,d} #递归创建文件夹a/b/c/d/e mkdir -p a/b/c/d/e
-
ls查看目录内容
ls -- list directory contents ls /oldboy ls -a // 可查看隐藏目录 ls -hl // 人性化显示 ls -ld // 查看目录本身的详情
-
pwd
pwd // 查看当前文件目录
-
touch happy.txt // 文件创建
-
文本编辑器
vi vim 使用vi打开oldboy.py,默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"Life is short,i use python" 按下esc键,回到命令模式 输入 :wq! 强制保存退出 w write 写入 q quit 退出 ! 强制 或者 :x 保存退出 ------ :q 不保存退出 :q! 不保存强制退出
-
查看文件内容
cat文件内容 cat命令用于查看纯文本文件(常用于内容较少的) #查看文件,显示行号 cat -n xxx.py #猫,查看文件 cat xxx.py #在每一行的结尾加上$符 [root@master tmp]# cat -E 1.txt #追加文字到文件 cat >>/tmp/oldboy.txt << EOF 唧唧复唧唧 木兰开飞机 开的什么机 波音747 EOF more查看文件 1.more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。 2.more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容 more /etc/passwd 按下空格space是翻页 按下b键是上一页 回车键向下读取内容 head显示文件前几行,默认前10行 tail显示文件后几行,默认后10行 #查看前两行 head -2 /tmp/oldboy.txt #查看后两行 tail -2 /tmp/oldboy.txt #持续刷新显示 tail -f xx.log #显示文件10-30行 head -30 /tmp/oldboy.txt |tail -21
-
cp复制命令
复制 > copy > cp #移动xxx.py到/tmp目录下 cp xxx.py /tmp/ #移动xxx.py顺便改名为chaoge.py cp xxx.py /tmp/chaoge.py Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数) cp -r 递归,复制目录以及目录的子孙后代 cp -p 复制文件,同时保持文件属性不变 可以用stat cp -a 相当于-pdr #递归复制test文件夹,为test2 cp -r test test2 cp是个好命令,操作文件前,先备份 cp main.py main.py.bak
-
mv移动命令
mv命令可以移动文件,文件夹 mv命令可以重命名 移动(搬家)命令 > move > mv cd /home #把老男孩从沙河这破地方,搬到朝阳去 mv /home/shahe/oldboy /tmp/chaoyang 文件/文件夹改名 mv x.log xx.log
-
rm删除命令
删除 > remove > rm 参数 -i 需要删除确认 -f 强制删除 -r 递归删除目录和内容 cd /tmp rm oldboy.py #默认有提示删除,需要输入y rm -f oldboy.py #不需要提示,强制删除 #rm默认无法删除目录,需要跟上参数-r rm -rf /tmp/oldboy/ rm -rf /tmp/* // 清空tmp下的所有东西 -------- 友情提醒:初学者使用rm命令,随时快照虚拟机
-
find查找命令
#Linux里如何找到需要的文件 例如 oldboy.py find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名) 参数 -name 按照文件名查找文件 -type 查找某一类型的文件,诸如: -perm 根据权限查询 b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。 s - socket文件 find /tmp/ -type f -name "oldboy.py" #找出/tmp所有以 .txt 结尾的文件 find /tmp/ -type f -name "*.txt" #找到/etc下所有名字以host开头的文件 find /etc -name 'host*' #找到/opt上一个名为settings.py find /opt -name 'settings.py' # 找出来再删除 find . -name *.e -exec rm {} \ # 查看修改时间 find / -mtime 0 // 当天修改的文件 +10 十天以前 -10 十天以后
-
管道符”|”
Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。 常见用法: #检查python程序是否启动 ps -ef|grep "python" #找到/tmp目录下所有txt文件 ls /tmp|grep '.txt' #检查nginx的端口是否存活 netstat -tunlp |grep nginx
-
alias别名命令
Linux如何提示你,在使用这些命令时候,提醒你小心呢? #查看系统别名 alias 默认别名 alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 别名作用是: 我们在linux中使用cp时候相当于执行了cp -i -i:删除已有文件或目录之前先询问用户; #别名用比较危险的操作,防止你犯错
-
which查找命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。 which指令会在环境变量$PATH设置的目录里查找符合条件的文件。 也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 which pwd which python 实例 which python #python命令在哪 /usr/bin/python #命令文件绝对路径
-
scp远程传输命令
Linux scp命令用于Linux之间复制文件和目录。 scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。 语法 scp 【可选参数】 本地源文件 远程文件标记 参数 -r :递归复制整个目录 -v:详细方式输出 -q:不显示传输进度条 -C:允许压缩 实例 #传输本地文件到远程地址 scp 本地文件 远程用户名@远程ip:远程文件夹/ scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名 scp /tmp/chaoge.py [email protected]:/home/ scp /tmp/chaoge.py [email protected]:/home/chaoge_python.py scp -r 本地文件夹 远程用户名@远程ip:远程文件夹/ scp -r /tmp/oldboy [email protected]:/home/oldboy #复制远程文件到本地 scp [email protected]:/home/oldboy.txt /tmp/oldboy.txt scp -r [email protected]:/home/oldboy /home/
-
du统计文件大小
Linux du命令用于显示目录或文件的大小。 du会显示指定的目录或文件所占用的磁盘空间。 用法 du 【参数】【文件或目录】 -s 显示总计 -h 以k,M,G为单位显示,可读性强 实例 显示目录或文件所占空间 #什么都不跟,代表显示当前目录所有文件大小 du #显示/home的总大小 du -sh /home
-
top系统负载查看
top 命令用于动态地监视进程活动与系统负载等信息
-
用户管理
现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源。 普通用户在所分配到的资源内进行各自的操作,相互之间不受影响。但是这些普通用户的权限是有限制的,且用户太多的话,管理就不便,从而引入root用户。 此用户是唯一的,且拥有系统的所有权限。root用户所在的组称为root组。“组”是具有相似权限的多个用户的集合。 root的权利 Linux系统的特性就是可以满足多个用户,同时工作,因此Linux系统必须具备很好的安全性。 在安装RHEL7时设置的root管理员密码,这个root管理员就是所有UNIX系统中的超级用户,它拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭进程,开启/禁用硬件设备等等。 因此“能力越大,责任越大”,root权限必须很好的掌握,否则一个错误的命令可能会摧毁整个系统。 root为什么叫root? 在Linux系统中,用户也有自己的UID身份账号且唯一 系统管理员UID为0 系统用户UID为1~999 Linux安装的服务程序都会创建独有的用户负责运行。 普通用户UID从1000开始:由管理员创建 用户组GID 为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用 户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方 便为组中的用户统一规划权限或指定任务。 假设有一个公司中有多个部门,每个部门中又 有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设 置权限。 例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的 数据库信息等。 Linux管理员在创建用户时,将自动创建一个与其同名的用户组,这个用户组只有该用户一个人 创建普通用户 #添加用户 useradd oldboy #设置密码 passwd redhat root用户可以修改其他所有人的密码,且不需要验证 创建用户组 group命令用于创建用户组,为了更加高效的指派系统中各个用户的权限,在工作中常常添加几个用户到一个组里面,这样可以针对一类用户安排权限。 例如超哥以前在公司里,就负责添加openLDAP用户管理,偶尔台湾,美国的同事去上海协作,我就得给他们添加到it部门组里面,以至于他们有对服务器操作的权限。 groupadd it_dep 删除用户userdel -f 强制删除用户 -r 同事删除用户以及家目录 userdel -r pyyu 切换用户 su命令可以切换用户身份的需求, su - username su命令中间的-号很重要,意味着完全切换到新的用户,即环境变量信息也变更为新用户的信息 #先看下当前用户(我是谁) whoami #切换用户 su - oldboy #退出用户登录 logout ctrl + d useradd deploy -s /sbin/nologin //注册一个deploy用户不让他登录 Tip: 1.超级用户root切换普通用户无需密码,例如“群主”想踢谁就踢谁 2.普通用户切换root,需要输入密码 3.普通用户权限较小,只能基本查看信息 4.$符号是普通用户命令提示符,#是超级管理员的提示符 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190519143328354.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDMzMTgz,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190519143353452.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDMzMTgz,size_16,color_FFFFFF,t_70)
-
sudo命令
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。 sudo 【选项】【参数】 -b:在后台执行指令; -h:显示帮助; -H:将HOME环境变量设为新身份的HOME环境变量; -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。 -l:列出目前用户可执行与无法执行的指令; -p:改变询问密码的提示符号; -s<shell>:执行指定的shell; -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份; -v:延长密码有效期限5分钟; -V :显示版本信息。
-
颜色
绿色:可执行文件 红色:压缩文件 蓝色:目录 白色:一般性文件 浅蓝色文件:链接文件 红色闪烁:文件有问题 黄色:设备文件 灰色:其他文件
-
建立软链接
ln -s /var/log/messages msg //
-
常用文件类型
-:普通文件 d:目录文件 l:链接文件 b:块设备文件 c:字符设备文件 p:管道符文件
-
修改权限
chmod 777 /home/dev20/ // 给dev20文件给 用户 组 其他人可读可写可执行的权限(只是当前目录) chmod 777 /home/dev20/ -R // 给dev20文件给 用户 组 其他人可读可写可执行的权限(-R可以将dev20下所有目录操作权限) chmod o-r /home/dev20 // 给其他人去掉读的权限,+就是加权限 *目录的X权限是能否进入目录的权限
-
chown [-R] user:group file // 修改文件或目录的用户和属组
chown 用户.组 conf.tar // 改变文件的用户和组
-
文件解压压缩
gzip 文件 // 压缩文件 gzip -d 压缩文件 // 解压文件
-
打包 尽量打成zip的包
tar -cf kk * // 将kk下所有文件打包 tar -tf long.tar // 查看包里面的内容 tar -zcf long.tar.gz * // 压缩和打包 tar -cvf conf.tar /tmp/* // 将tmp下的文件全部打包成conf.tar(可以罗列打包过程) tar -tvf conf.tar // 查看打包文件 tar -xvf conf.tar // 解包
-
输出重定向
echo "python" >log.txt // 标准输出重定向,会清空文件原有内容 echo "python" >>log.txt //追加输出重定向 echo "python" 2>erro.log // 错误输出重定向 echo "python" 1>log.log // 标准输出重定向 echo "python" >log.log 2>&1 // 错误输出指向标准输出重定向(错误标准都到log.log) echo "python" >/dev/null // /dev/null 看作黑洞,所有写入它的内容都会永远丢失 > /var/log.log // 直接清空文件内容 echon -n > /var/log.log // 丢弃换行
-
管道符
前面输出的东西交给后边处理 echo 123|cat -n echon 123|passwd --stdin root // 将root密码修改为123
-
df -h // 看磁盘 free -m // 看内存单位m -k 单位k uptime // 更新时间 w // 查看机器使用用户个数 curl url // 例:curl www.baidu.com 查看网页(get请求) curl -d url // post请求 wget
-
快捷键
ctrl+u // 删除本行命令 ctrl+l // 清屏 ctrl+a // 跳到命令行头 ctrl+e // 跳到命令行尾 ctrl+k // 若在行头想要清除本行
-
grep
grep -v "^$" /etc/bashrc > /etc/bashrc.bak // 搜索出bashrc文件中非空行的内容,保存到bashrc.bak文件中
-
set nu
给vim编辑加行号 -
lrzsz // 给windows上上传文件的软件
rz // 从windows获取文件(适合小文件) sz // 给windows上传文件(适合小文件)
-
$PATH
// 查找程序执行路径 -
--prefix="文件路径"
将软件安装在哪个目录 -
环境变量:
env 查看环境变量 env|grep -i path 查看包含path的环境变量
-
which ls
// 查看ls命令在哪个目录 -
ln -s /usr/local/python3/bin/python3 /bin/python3
// 建立一个软连接到/bin/python3 -
echo
ls
// 将ls的执行结果作为参数传给echo等同于echon $(ls)
-
shell
a=$((1*2)) echo $a小脚本1: #!/bin/bash a=$1 b=$2 echo $(($a+$b)) 小脚本2:(创建两个文件,并把他们放在以日期为名的文件夹下) #!/bin/bash a=$1 b=$2 c=`date +%Y%m%d` mkdir $c cp $a $c echo $? cp $b $c echo $? 小脚本3:(判断是否为可执行文件 放在tmpdir目录下) #!/bin/bash if [ -x /bin/nohup ] then if [ ! -d /temdir ] then mkdir /tmpdir fi cp /bin/nohup /tmpdir fi 小脚本4:(循环输入用户名加随机数) while read -p "please input your name:" name do echo $name$RANDOM done 小脚本5:(创建用户) #!/bin/bash if [ $# -ne 1 ];then echo "你需要传入一个参数" exit 1 fi user=$1 if grep -q "^$user" /etc/passwd then echo "用户已存在,他/她是$(id -u $user)" else echo "用户不存在开始创建了" useradd $user if [ $? -eq 0 ] then echo "创建用户成功!" else echon "创建用户失败!" fi fi
-
-eq: 等于 -ge:大于 -ne:不等于
-
分割:
cut -d: -f 7 /etc/passwd
-
seq 10
// 创建长度为10的序列 -
read -p "please input your name:" name
//相当于python的input -p提示符 -
echo $RANDOM
//随机输出一个数字 -
while :
// 死循环 -
根据名称查看进程状态
ps -ef |grep redis、 ps aux | grep uwsgi
-
查看端口是否监听
netstat -lntp | grep 6379
-
redis三种操作
./etc/init.d/redis-server start ./etc/init.d/redis-server stop ./etc/init.d/redis-server restart
-
Django
django-admin startproject celery_demo 创建Django项目 python manage.py startapp demo 创建App
-
python
python -m pip install --upgrade pip
-
安装相关