首页 > 代码库 > linux初学体会

linux初学体会

第一篇随笔,其实是为了写作业,可是老师的要求是对的,其实自己在配环境和做作业的时候也会把遇到的问题的解决方法记录下来,以便以后查找方便。这次借此将那些内容放在这里,也跟大家一起分享下。

上周六算是第二次听liunx的课,感觉比第一次听要轻松多了,所以复习是很重要的。

以下是这次课程自己记得笔记  注:绝对不是老师的笔记复制过来的!最后有我做作业遇到的问题的总结!

1、http地址默认不写端口号就是80
2、127.0.0.1和localhost都是本地
3、用户管理  $是普通用户,#是管理员用户
      windows是单用户的,linux是多用户的,可同时支持多用户操作
      id : 可以查看当前用户
      whoami  :查看当前用户
      who  :或者  查看当前已经登录的用户
      w   :也可以看当前已经登录的用户
 
4、添加用户 useradd 用户名   # 添加用户
     给用户加密码  passwd 密码  #给添加的用户加密码 和 重置密码  添加用户不指定家目录,目录默认的家目录在/home/目录下,在家目录下显示波浪线~技术分享
       cd ~      快速回到家目录   或者  直接 cd
       切换用户: su 用户名 (切换到root用户目录下) 或  su - 用户名  (切换到普通用户的家目录) 
        区别:su -   会重新加载用户的环境变量
        sudo:获取超级用户权限
        添加普通用户sudo的权限:
             使用root用户编辑 /etc/sudoers文件,找到 root ALL=(ALL) ALL 这一行,在它下面加入 bestest ALL=(ALL) NOPASSWD:ALL然后保存即可。NOPASSWD代表该用户使用 sudo的时候不用输入密码 ?
        删除用户:userdel  用户名
                      userdel -r  删除用户同时删除用户家目录
 
5、组管理
        添加组:groupadd name
        修改组:
        删除组:groupelname
 
6、对目录(文件夹)操作:了解linux文件目录结构
         pwd     显示当前你所在的路径
         cd       进入哪个目录(文件夹)
         cd /      根目录
         /         是顶级目录
         cd..      回到上级目录 
         cd../../      回到上几级目录,上几级目录就几个..
         cd -        返回上一次操作的目录
         相对路径:
         绝对路径:
         创建文件夹:mkdir   父目录不存在的话,后面加 -p 先创建父目录,再创建父目录下的子文件夹
         mkdir --help   帮助
         删除文件夹:rm 、  rmdir(删除空文件夹)
         删除非空文件夹不询问:rm -rf
         删除根目录:rm -rf /     就完蛋了
         查找文件夹下的东西:ls、ll
         移动文件夹:mv 文件夹名 目标路径    mv besttest /tmp
         改名:mv 文件夹名 要改的文件名    mv  besttest  linux
         创建空文件:touch 文件名
         文件详情中显示drwxr-xr-x前面是个d说明是文件夹,前面没有d说明是文件
         创建隐藏文件:touch .yincang    创建的文件名前面带一个点是创建了一个隐藏文件
         查看隐藏文件:ls -a
         复制文件:cp  文件名  目标路径     cp besttest /tmp/
         复制目录:cp -r  文件夹  目标路径   cp -r besttest /tmp/
         强制复制文件/文件夹,不询问是否覆盖:cp -f 文件名 目标路径  
         alias是给命令起别名,可造命令   alias  cp=cp  修改后  cp -f 才不询问强制覆盖
         alias造命令:1、alias hyh=‘cp’  输入hyh bestest /tmp/  复制besttest问加你夹到tmp下;2、alias  hyh=‘etc/lammp‘     下次输入hyh就直接跳转到那个地址   ------  只对当前窗口有效
         让alias造的命令永久生效:vi etc/profile   里加入alias造的命令
         强制复制任何文件(文件夹):cp -rf              
 
7、对文件操作:vi 或 vim(对vi的升级版)
         vi的命令模式:用i,在当前位置进入编辑模式;o 在下一行进入编辑模式;a  用的比较少,在当前位置的下一位进入编辑模式
         :q   没有修改直接退出
         :wq   或   :x     保存并退出
         :q! 不保存退出
          /(查找内容)   查找想要查找的内容
          技术分享
         :set nu    显示行号
         :set nonu   取消显示行号
         :数字    快速渠道某一行
          shift+g   跳转到文件末尾
          x    删除单个字符
          dd   删除整行 
          19dd   删除19行
          u  撤销
          yy   复制一行   
          19yy  复制19行
          p   粘贴
          .    重复前一次操作
          shift+$   光标移到行尾
          shift+0   光标移到行首 
         :%s/要替换的内容/替换成的内容/g   %所有  s字符串    替换所有字符串
         vi的编辑模式:esc退出编辑模式到命令模式
          
          cat:查看短文件
          more:查看文件分屏显示,按回车一行行显示
          less:查看文件,功能强大,可操作前后翻页,上下搜索
 
          动态查看日志:tail   默认显示后10行;tail -5f  默认显示后5行;tail -f  看动态日志 
 
           创建软连接(快捷方式):ln -s 源文件(绝对路径) 创建的快捷方式名字    ln -s /opt/lampp/xammp ~/hyh   下次输入ll hyh 直接指向xammp
 
            显示当前目录占用硬盘大小 :du -sh
            显示当前目录每个文件/文件夹占用硬盘大小:du -sh *
            磁盘用量:df    或df -h
 
           查看文件下的东西:ls -l = ll
           修改权限:chmod     x代表执行  w代表写  r代表读   
           加权限:文本形式
                  chmod o+x 文件名 其他用户
                  chmod  g+x 文件名   本组用户
                  chmod  u+x  文件名   自己
                  chmod +xwr 文件名  所有权限
                  chmod  a+x 文件名  所有
            减权限:
                  chmod o-wx 文件名   减写权限    把+变-就是减权限
            
             修改权限数字形式:r=4  w=2 x=1   rwx:4+2+1;    r-x:4+1;   rw-:4+2;   最高权限777    所有用户可读可写可执行
              只写一位数代表其他用户,写两个数代表组和其他,写三个数字代表所有用户
               chmod -R  递归  把目录下所有文件及文件夹加权限
  
               chown:改变文件的所有者   chown 文件名 user 
               如果是文件夹要加-R:chown -R 文件夹名 user
 
               chfrp:改变文件的所属组   chgrp 文件名 group
               如果是文件夹要加-R:chgrp -R 文件夹名 group
        
               |:管道符,连接两条命令的
               ls |wc -l:ls把他的结果给后面这条命令让他操作
               cat 文件名 |wc -l:统计文件行数
 
               &&:前后两条命令同时执行,执行完前面的执行后面的
               作用:可以启动某个命令的同时看日志  用&&执行两条完整的命令
               例如:/opt/lammp/lammp restart && tail -f /logs/..........:启动完程序会显示出日志内容
              
               查找文件/文件夹:find /-name mysql
               查找文件内容:grep 查找内容 查找文件名   -w 匹配指定字符串;-v 输出不匹配字符串,过滤掉指定信息
               看日志查找带关键字的日志内容:先tail -f 日志 | grep 关键字    
 
               重定向:
               cat test > cc.txt    看test文件的内容,然后放到cc.txt,相当于复制,尖朝谁就往谁里写内容
               echo “hehe”>cc.txt   查看cc,原内容消失,写入hehe;大于号前面不加内容就可清空cc.txt   可用于清除日志文件内容
               echo“hehe”>>cc.txt  查看cc,追加新内容
                     
8、安装软件
     上传、下载:ftp工具,设置选sftp,rz命令、sz命令,但是他不能上传文件夹
      Rz、sz命令安装:使用yum安装,yum –y install lrzsz,
      编译安装:技术分享http://blog.chinaunix.net/uid-20639775-id-  154615.html
 
      rpm安装包自动配置环境变量:rpm -ivh  **.rpm       
      rpm -e :卸载,用rpm安装才能用rpm卸载
      rpm -qa:查询已安装的软件包,rpm -qa|grep mysql   管道符后面是要找的软件包名字
 
      yum安装:从yum源下载安装包,下载、安装、加环境变量都不用管,直接自己配好
      ***liunx安装包里有两个包,1是安装包,2就是yum源
      常用命令:
       ? yum install httpd#安装Apache
       ? yum -y install httpd#如果有选项全部同意安装
       ? yum list|grep httpd#从yum列表中查找你需要的软 件
       ? yum update httpd #yum升级Apache
       ? yum list installed |grep mysql#查询是否安装 mysql
       ? yum remove mysql#卸载yum安装的mysql
 
       源码安装:
       源码安装三部曲
       ? 1、生成makefile编译文件 ? ./configure 一般安装包下面都有一个configure文件,用来生成makefile编译文 件 ? 常用的参数 ? --prefix 指定安装目录 ? --with-xx 指定依赖文件的目录
       ? 2、make编译 ? make命令也需要安装,会根据./configure产生makefile文件编译 写好的c语言程序,产生可运行的文件
       ? 3、make install ? make install的作用是把编译好的文件复制到指定的目录下,也就是第一步-prefix指定的目录,如果没有指定目录的话,还是在当前目录下 
 
9、开关机:普通用户一般没有开关机权限  
     关机:shutdown  -h  30 #定时关机 
               shutdown  -h  now  #立即关机
               init 0  立即关机
      重启:reboot后面可加参数,无所谓加不加;shutdown也可以重启,后面可加延迟时间 shutdown -r 20 "我要重启啦"---定时重启
10、注销:exit,切换用户:exit切换到之前的用户
 
11、网络的
       查看ip地址:ipconfig  或 ip a(很多高版本没有ifconfig了)
       vmnet8 是仅主机模式,vmnet1是nat模式
       dhclient   #自动获取ip
 
12、压缩、解压文件
       tar:打包     c 打包; x 解压缩; z 用gzip压缩   
       格式:tar cvf  文件名.tar  要打包的文件名---> tar cvf liunx.tar liunx
       压缩:tar zcvf liunx.gz liunx      ---- tgz和gz结尾的都是压缩过的
       解压:tar xvf liunx.gz liunx      xvf是通用的,不管压缩没压缩过,zxvf是解压压缩过的包
       打zip包:zip linux.zip linux      zip命令要yum安装,不是自带的
       解压zip包:unzip linux.zip   
        gzip只能压缩文件,不能压缩文件夹:gzip 文件名        原来文件就没了,只保存压缩文件包,可用来备份日志
        gunzip解压:unzip 文件名.gz
 
13、环境变量:env  查看环境变量
       whereis  ls :显示环境变量配置
       如果写了一个脚本,想在任意目录下执行,加到环境变量里,查看环境变量文件里加到环境变量里的目录,把脚本移过去,也可直接执行
       系统环境变量:所有人都能用   /etc/profile
       用户环境变量:只针对自己生效,别人用不了   ~/.bashrc
 
14、进程
       ps:查看当前正在运行的进程(静态)    -a或-e列出所有进程;-ef 查看进程之间的关系
       ps -ef |grep mysql:筛选mysql进程
       ps -ef |grep mysql|grep -v grep:筛选mysql进程并去除grep本身的进程
       kill -9 进程id(可跟多个进程):结束进程   killall:结束所有进程
       top:查看当前运行的进程(动态),内容显示多,并且是动态的,和ps区分开
       
       后台运行进行:nohup ./jmeter-server &        后台运行,不占用控制台,一直运行,关闭界面,ctrl+c等操作都不会影响,不会关闭
 
14、定制任务:可用于定时备份日志,数据库等
       crontab:编辑定时任务
       crontab -e,进入编辑定时任务界面
       crontab 文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表 小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天 (0~6,0为星期天)。cmd表示要运行的程序,*代表每分钟都执行 ? 示例 : ? * * * * * sh /opt/lampp/test.sh 表示每分钟执行一次test.sh这个脚本 ? */5 * * * * sh /opt/lampp/test.sh 表示每5分钟执行一次test.sh这个脚本 ? 30 21 * * * /usr/local/apache/bin/apachectl restart 表示每晚的21:30重启apache
       
       crontab -l:查看当前有哪些定时任务
 
15、查看端口号
netstat :查看端口号
netstat  nlpt|grep 8080:查看8080端口号是否被占用,查看使用8080端口号进行的进程id
 
16、shell脚本:多个命令写在一起 ,其他内容查看ppt
       注意:shell里定义变量不能有空格
       取进程id:ps -ef|grep jmeter|grep -v grep|awk‘{print $2}‘  
       awk‘{print $2}‘ 取第二列的数据,存为变量才能用
      
       结束进程脚本
       写入脚本内容为:(保存为.sh)
      #!/bin/bash     #需要什么解释器来执行,liunx默认的解释器就是bash,如果不写也能执行
       count=`ps -ef|grep jmeter|grep -v grep|awk‘{print $2}‘|wc -1`
       pid=`ps -ef|grep jmeter|grep -v grep|awk‘{print $2}‘`
       if [ $count -gt 0 ]   #count大于0
         then
           kill -9 $pid
           echo "jmeter stoped"
      else
          echo "jmeter-server not running.."
 
        启动脚本:
        count=`ps -ef|grep jmeter|grep -v grep|awk‘{print $2}‘|wc -1`
        if [ $count -gt 0 ]   #count大于0
            then
            echo "jmeter-server is running。。"
        else
           nphup /root/apache-jmeter-2.11/bin/jmeter-server &
 
          重启脚本:
          结束脚本的绝对路径
          启动脚本的绝对路径
 
         bash:解释器   
         bash  文件名.sh :指定用bash运行这个脚本,可以写在脚本里,也可以放在外面
 
17、获取到当前时间字符串
       date +%Y%m%d%H%M%S
 
--------------------------------下面是作业----------------------------
 
每天23:59分备份lampp的access_log文件,备份的文件名以当时的时间命名 201212241852_access.log到/tmp/logs    备份完要清空原来的
 
首先在tmp文件夹下创建logs文件夹:mkdir logs
logs文件夹下创建一个backup.sh文件:touch backup.sh   创建脚本这里有个小插曲,下面会提到
写入相应内容:

#!/bin/sh
rm -rf /tmp/logs/*
cp /opt/lampp/logs/access_log /tmp/logs/`date +%Y%m%d%H%M%S`_access_log

然后先执行一下脚本

这里我遇到了第一个问题:脚本无法tab键补全,发现脚本权限有问题,这时直接

chmod 777 backup.sh   #直接赋予最高权限

继续执行脚本,又报错:-bash: ./backup.sh: /bin/sh^M: bad interpreter: No such file or directory 

这里就是上面提到的小插曲,由于我开始在在windows下创建的脚本进行的编辑,所以提示这个错误

百度查询后找到方法:vi backup  后  输入::set ff   出现结果:fileformat=dos  这是脚本无法执行的原因,因为他是dos格式的,为了省点事儿,直接删除脚本重新在linux下命令创建脚本,写入内容,问题解决

以上,脚本里的内容就创建完成
 
下面编写定时任务:
crontab -e   打开定时任务编辑器
写入如下内容:

*/1 * * * * sh /root/backup.sh

保存退出

进入backup目录下查看运行结果,文件删除和创建正常,虽然不知道是否达到老师的要求,但是确实是按照我编写的脚本运行了。

--------------------------------------以上就是linux课程学习的内容-------------------------------

linux初学体会