2023年8月3日发(作者:)
linux服务器基本常识,服务器搭建-Linux基础知识服务器搭建还是需要⼀些Linux知识的,这节就聊点基础的。⽂件权限操作查看权限Linux中每个⽂件对每个⽤户来说都有对应的权限,在任⼀路径中输⼊ll就可以查看这些信息:root@ip-*** /usr/local # lltotal 32Kdrwxr-xr-x 2 root root 4.0K Jan 14 17:00 bindrwxr-xr-x 2 root root 4.0K Jan 14 17:00 etcdrwxr-xr-x 2 root root 4.0K Jan 14 17:00 gamesdrwxr-xr-x 2 root root 4.0K Jan 14 17:00 includedrwxr-xr-x 4 root root 4.0K Jan 14 17:08 liblrwxrwxrwx 1 root root 9 Jan 14 17:00 man -> share/mandrwxr-xr-x 2 root root 4.0K Jan 14 17:00 sbindrwxr-xr-x 7 root root 4.0K May 27 14:02 sharedrwxr-xr-x 2 root root 4.0K Jan 14 17:00 src关于权限⽅⾯我们主要关注第1、3、4列我们先来看第⼀列,第⼀列表⽰各⽤户对该⽂件/⽬录的操作权限,我把它断成四个部分,d|rwx|r-x|r-x分别表⽰类型|⽂件所有者权限|⽂件所属⽤户组权限|其他⼈的权限。类型我们经常⽤到的有d-⽬录,--⽂件,l-连接⽂件,r(4)|w(2)|x(1)分别对应读|写|可执⾏(进⼊⽬录)。第三列和第四列分别代表⽂件所有者和⽂件所属⽤户组。改变权限属性改变⽂件权限需要⽤到chmod命令,上⾯我在rwx中标注了4、2、1,代表的就是它们的对应值,需要哪些权限把它们相加就是了,来个⽰例:root@ip-*** ~ # lltotal 4.0K-rw-r--r-- 1 root root 25 Jun 8 02:33 计算⼀下得到⽂件对各⽤户的权限值是644,下⾯使⽤chmod命令改变⼀下:root@ip-*** ~ # chmod 761 @ip-*** ~ # lltotal 4.0K-rwxrw---x 1 root root 25 Jun 8 02:33 这⾥分别赋予⽂件所有者|⽂件所属⽤户组|其他⽤户的权限是可读可写可执⾏|可读可写|可执⾏另外,除了更改⽂件权限之外,还可以更改⽂件所有者和所在⽤户组,分别⽤到的命令是chown、chgrp,具体使⽤⽅式可以使⽤man命令查看。磁盘⼀般在我们购买服务器的时候我们都会选择安装好⼀个Linux系统,分区啥的都已经配置好了,这⽅⾯对⼊门同学来讲并不需要掌握太多,主要注重查看。查看磁盘使⽤df命令,加上参数-h使⽤以⼈类易读的⽅式展⽰。压缩与打包Linux中有很多软件是下载⼀个压缩包让⽤户⾃⼰解压安装的,这就需要我们掌握必要的压缩技能。使⽤⽐较⼴泛的有gzip、bzip2、tar。gzip、zcatgzip应该说是⽬前Linux系统中使⽤最⼴的压缩命令了。它可以解开*.z、*.zip、*.gz等格式的压缩⽂件,下⾯来看它的使⽤⽅式:root@ip-*** ~ # gzip -v : -8.0% -- replaced with @ip-*** ~ # 这⾥的-v是为了在压缩结束后查看压缩⽐,当然还有其他参数:-c 将压缩的数据输出-d 解压缩-t 校验压缩⽂件-1~-9 设置压缩级别,-1最快,压缩效果也最差,-9最慢,压缩效果最好,默认-6,⼀般情况下使⽤默认的就可以了。so,当我们需要解压缩⽂件的时候只要加上-d参数就可以了。我们知道cat命令可以⽤来查看纯⽂本⽂件,那zcat就是⽤来查看纯⽂本被压缩后的压缩⽂件。另外,需要注意的⼀点是使⽤gzip压缩后源⽂件就会被⾃动删除。bzip2、bzcatbzip2是⽐gzip更优秀的压缩⼯具,⽤法跟gzip⾮常近似:-c 将压缩的数据输出-d 解压缩-k 保留原⽂件-z 压缩参数-t 校验压缩⽂件-1~-9 设置压缩级别,-1最快,压缩效果也最差,-9最慢,压缩效果最好。其压缩⽂件以*.bz2格式存在,bzcat的作⽤与zcat相似,不再赘述。tar上⾯我们讲到了压缩命令,但是这⾥的压缩都是单⽂件的,要是我想把多个⽂件压缩在同⼀个压缩包中光⽤上⾯的命令是做不到的,有的同学会说我们可以压缩⼀个⽂件夹啊,想法很好,但是不好意思,你这么做的话会类似这样的提⽰:* is a directory -- ignored。所以这⾥我们要⽤到另⼀个⼯具tar,把那些⽂件打包成⼀个⽂件合集再使⽤压缩⼯具进⾏压缩。值得⼀提的是,tar还可以同时在参数中直接使⽤gzip/bzip2。tar的命令⾮常多,介绍⼏个常⽤的:-c 新建打包⽂件-j/-z 使⽤bzip2/gzip压缩,打包⽂件名通常应该是*.2/*.-t 查看打包⽂件内容,主要⽤来查看⽂件名-x 解压缩,通常搭配 -C ⽤于解压到⽬标⽬录-v 查看压缩/解压过程中,正在被处理的⽂件-C 解压到指定⽬录,与 -x ⼀起使⽤-f 后⾯接被处理的⽂件名下⾯是⼏个常⽤的组合,⼀般情况下⾜以应付⼤部分使⽤场景了。压缩(bzip2):tar -jcv -f 2 待压缩的⽬录压缩(gzip):tar -zcv -f 待压缩的⽬录查看包含⽂件(bzip2):tar -jt -f /2查看包含⽂件(gzip):tar -zt -f /解压(bzip2):tar -jxv -f 2 -C 解压到某处解压(gzip):tar -zxv -f -C 解压到某处来个实例:root@ip-*** ~ # ls -a. .config .zcompdump-ip-172-31-17-254-5.0.2.. .oh-my-zsh .de .profile .zsh__history .ssh . .viminfo .zcompdump testroot@ip-*** ~ # tar -jcv -f 2 ...../.oh-my-zsh/lib/./.oh-my-zsh/lib/./.profile./.zsh_history./../.bashrcroot@ip-*** ~ # ls -a. .oh-my-zsh .zsh_history.. .profile .de .ssh _history .viminfo .zcompdump . .zsh-update打包压缩成功后,可以看到最后多了⼀个2⽂件。另外,另外两组组合可以⾃⼰尝试⼀下,另外,解压强烈建议加上-C命令,以免覆盖原来的⽂件。shell脚本shell脚本是能够在shell环境中执⾏的程序,它遵从shell语法,有了它,我们可以为⼀些需要重复操作的系列连续性命令做⼀个合集,解放劳动⼒。下⾯我先给个常⽤的git案例:#!/bin/bash //声明使⽤的shell环境action="none" //变量赋值echo "1: commit to dev and update test" //打印字符串echo "2: merge branch to master"read -p "please input number to select next step: " -t 30 action //读取⽤户键盘输⼊并赋给 action 变量,30秒内⽆输⼊则跳过case $action in //case语句,判断条件为 action 变量1)read -p "please input commit content: " -t 30 commitif [ "$commit" == "" ]; then //if判断语法commit="default commit" //条件符合执⾏的操作fi //if判断语句结束git add .git commit -m "$commit" //引⽤变量git push origin devexit 0 //退出shell;; //满⾜ action 为1的条件的语句结束2)echo "1: cyc"echo "2: bingqichen"echo "3: dev"branch[1]="cyc" //数组赋值branch[2]="bingqichen"branch[3]="dev"read -p "please input number to select the branch: " -t 30 branch_noif [ "$branch_no" == "1" ] || [ "$branch_no" == "2" ] || [ "$branch_no" == "3" ]; then //if条件判断,|| 表⽰或关系git checkout mastergit merge "${branch[$branch_no]}" //${branch[1]}为数组的引值⽅法git push origin mastergit checkout -else //另外还有 elif ,跟js中的 else if 类似,可以继续添加判断条件echo "sorry, this is an undefined branch!"fiexit 0;;*) //action为其他值的操作echo "sorry, this is an undefined action!"exit 0;;esac //case语句结束这段脚本就是我⽤来解决git提交和代码合并的问题,⼤家可以根据⾃⼰的使⽤场景改造。⼤部分语句还是很简单的,主要有⼏个需要注意的点,⽐如条件判断语句:[ "$branch_no" == "1" ]这⾥⾯的每个空格都不可以省略!还有赋值语句不能加空格,慎⽤单引号等等。编译安装Linux中安装软件的⽅法主要分为使⽤包管理器安装,和下载源代码⾃⾏编译安装,前者相对简单,但是有可能有些最新的软件包未必会有,⽐如PHP7,这时候就需要我们下载软件源码编译成⼆进制⽂件才能使⽤。先来看看编译过程:⼤致过程是这样的,当我们下载到软件源码后,⼀般会是⼀个压缩包,解压之后⾥⾯会有⼀个⽤于建⽴Makefile⽂件的config/configure⽂件,使⽤config/configure建⽴Makefile后,执⾏make命令将源代码根据Makefile⽂件的配置进⾏编译,最后执⾏make install命令,将编译好的内容依据Makefile中install选项安装到指定位置完成安装。这⾥讲讲为什么要根据Makefile进⾏编译,其实GCC可以直接编译程序⽂件,但是⼀个软件不可能只拥有⼀个程序⽂件,要是⼈⼯⼀个个去编译每个⽂件,会⾮常劳民伤财!所以借助⼀个Makefile我们就可以搞定了。下⾯来演⽰⼀个PHP7的编译安装:root@ip-*** ~ # lsmirrorroot@ip-*** ~ # mv mirror //重命名root@ip-*** ~ # tar -zxv -f //解压缩源码包root@ip-*** ~ # lsphp-7.0.0 @ip-*** ~ # cd php-7.0.0 //进⼊源⽂件⽬录root@ip-*** ~/php-7.0.0 # ls //⾥⾯会有⼀些⼿册,可以⽤来做安装参考INSTALL @ip-*** ~/php-7.0.0 # ./configure //执⾏configure建⽴Makefilechecking for grep that handles long lines and -e... /bin/grepchecking /bin/grep -E...checking for figure: error: xml2-config not found. Please check your libxml2 installation.我在编译到这⼀步报了⼀个错误,看起来是由于libxml2未安装,在我尝试安装后发现已经存在这个软件,在⽹上搜寻⼀⽚后发现还要安装libxml2-dev,这个我不是很懂。。。再次执⾏./configure成功并⾃动建⽴了Makefile⽂件,继续:root@ip-*** ~/php-7.0.0 # make //这个步骤视软件⼤⼩和硬件性能执⾏时间会有差异/bin/bash /root/php-7.0.0/libtool --silent --preserve-dup-deps --mode=compile cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/root/php-7.0.0/ext/opcache/ -DPHP_ATOM_INC -I/root/php-7.0.0/include -I/root/php-7.0.0/main -I/root/php-7.0.0 -I/root/php-7.0.0/ext/date/lib -I/usr/include/libxml2 -I/root/php-7.0.0/ext/sqlite3/libsqlite -I/root/php-7.0.0/TSRM -I/root/php-7.0.0/Zend -I/usr/include -g -O2 -fvisibility=hidden -c /root/php-7.0.0/ext/opcache/ZendAccelerator.c -o ext/opcache/...Build 't forget to run 'make test'.编译结束时,应该能看到上⾯的提⽰,make test是⾮必要的,⾃⾏选择,另外要注意的⼀点,如果你是⼆次编译的话需要先清理之前的编译出来的⽂件,即在make之前执⾏⼀下make clean到这⾥我们只要再执⾏⼀下make install就可以安装结束了。这只是最基础的安装,我在这过程中省略了很多配置项,这样安装出来的软件是很“简陋”的,事实上在执⾏./configure操作时,有很多可选项供我们配置,但是不同软件可以添加的参数是不⼀样的,怎么看当前的软件可以添加哪些参数呢?在软件源码⽬录执⾏./configure --help就可以了:root@ip-*** ~/php-7.0.0 # ./configure --Installation directories:--prefix=PREFIX install architecture-independent files in PREFIX[/usr/local]...SAPI modules:--enable-fpm Enable building of the fpm 这⾥只列举了两个,⼀个是⽬标安装⽬录,⼀个是启⽤fpm,这些选项可以根据需要⾃⾏添加。其实,很多软件通过添加软件源的⽅式还是可以⽤包管理器安装的,上⾯说的PHP7就是这样,不要打我其他资料包管理器Linux的包管理器有很多种,Cent OS有yum,Ubuntu有apt,还有别的像aptitude之类的,这⾥有⼀篇很好的⽂章供参考点我查看oh-my-zshzsh也是⼀个⾮常强⼤的shell环境,可以⽤它来代替Linux系统原有的bash,这是⼀组zsh的配置,它可以让zsh更加好⽤,感兴趣的可以看我的另⼀篇⽂章oh-my-zsh⼩记htop这是⼀个运⾏在终端的⽤于查看系统资源使⽤情况和管理进程的图形化⼯具,使⽤yum或者apt-get等安装即可,完成后直接输⼊htop就可以使⽤了,⽐原⽣的top更强⼤。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1691039361a492764.html
评论列表(0条)