Linux基础

服务器 Linux 998      收藏
Linux基础

1、Linux的常用命令:

ls 显示当前文件夹目录 ll -->详细信息 ls -a 显示所有文件 ls -lhSr

w 查看登录的帐号,还可以查看cpu负载情况,who am i ,who 看的信息少些

last 查看过去用户登录信息,lastlog //用户最后登录的日期

cd 切换目录 cd - -->返回上一目录 cd ~ -->用户文件夹  cd / -->更目录

cd .. 上一层目录  dirname ~baidu--> /home basename ~baidu--> baidu

pwd 显示当前目录

shutdown -h 10 (Root下)10分钟后关闭系统

halt 通用立即关闭系统

useradd bbc 添加用户 passwd abc 更改用户密码

clear/Ctrl+L 清屏,把命令行清屏,相当于Windows的CLS命令

dhclient 获取上网地址 ifconfig 查看网络参数

Ctrl+Alt+F2 切换到全命令模式,即CLI命令行

Ctrl+Alt+F1 跳回GUI界面

tab 自动补全


vi index.html 编辑指定文本文件 Esc+ :wq 保存退出

mv 1.html 2.htm 移动文件,相当重命名

unalias cp 解除cp覆盖文件提示确认

cp -r file1 dir1 dir2 将文件file1和目录dir1复制到dir2

echo 把内容写入文件,echo "Hello World">>index.html

echo -n "please input a value:" #不换行

mkdir 新建文件夹 mkdir -p admin/model ,递归创建文件夹

rmdir 删除文件夹 rmdir -p admin/model ,递归删除空文件夹

rm 删除文件  rm -rf admin -->递归删除文件


data 显示日期,示例:data "+%Y-%m-%d %H:%I:%S"

cal 显示当前日历,含星期的日历 cal 1-28 2016

cat 显示里面的内容 示例:cat index.html

touch 修改属性 touch -t 0902211033 qq 修改qq文件夹的最后修改时间

more cal 2017 |more 分屏显示数据,回车/空格控制显示

more index.html 分页看文件q退出

less index.html 查看文件,可以查找,/ 搜索 n 向下 N向下 q退出

tail -5 index.html 显示后5行 head -3 index.html 显示前三行

find find / -user qq 查找用户的文件 find / -name qq 查找qq文件名

find / -size +6000k

find / -name index.html -exec rm -rf {} \; 查找文件并执行命令

find / -nouser -exec rm -ri {} \; //删除没有用户的文件和文件夹

find /var/www/html -type d -exec chmod 0755 {} \;//目录更改权限

find /www/html ! -type -d -exec chmod 640 {} \;//修改文件权限

which which passwd  查找passwd位置   whereis ls 查看命令位置

updatedb 更新数据库

locate locate index.html 查看普通文件

du 查看目录大小, du -sh

netstat netstat -tnulp  //查看tcp监听端口,数字显示,并且显示PID

grep grep -vxFf a.log b.log >diff.log //比较两个日志的不同


2、Linux的目录结构:

bin 常用命令

sbin 超级管理员命令,shutdown -h now等

boot 启动方式

dev 设备文件

etc 配置文件夹

home 用户目录,不含Root

usr 字体,帮助文档,相当windows目录

lib 共享函数库

mnt 默认挂载区


3、Shell简单使用:

shell 用户与内核沟通的中间人

GUI 图形化SHELL

CLI 命令行SHELL


4、简单的SSH登录设置命令-远程登录:

vi /etc/selinux/config -->修改 SELINUXTYPE=disabled  //跳过安全检查


vim /etc/sysconfig/network-scripts/ifcfg-eth0 //固定IP

修改添加如下:

ONBOOT=yes

BOOTPROTO=static

NETMASK=255.255.255.0

IPADDR=192.168.0.115

GATEWAY=192.168.0.1

DNS1=8.8.8.8


用SSH登录Linux,工具如PuTty:192.168.0.115:22

使用SSH远程复制:把本地文件复制到远程主机

Linux下:ssh 192.168,0.116

本地文件:scp index.html root@192.168.0.115:/tmp

useradd -s /sbin/nologin tom  //添加用户,不能登录ssh

usermod -s /sbin/nologin doobo //修改用户不能ssh登录


5、权限(帐号、角色-组、其它人):

-rw-rw-r-- rw-所有者 rw- 所属组 r-其他人---664

umask -S 显示默认权限

r w s 4 2 1  读-4 写-2 执行-1

chmod 修改权限 chmod 777 b.sh  chmod o-w b.sh 文件的其它用户除去写权限


rwx--目录 w-新建-改名-删 x-进去 r-读文件列表 rx一般一块用

注意:对文件的删、更名等权限属于该文件的所在目录的权限,与该文件权限无关


chown 修改文件的所有者 chown root index.html

或者 chown root:root index.html  //修改所有者和用户组

chown -R root:root admin  //修改admin内所有文件和文件夹的所属用户

/etc/shadow 用户密码文件 15855:0:9999:7::: 注册时间,多少天才能修改密码,多

少天必须修改密码,提前几天通知,后面宽限多少天,帐号失效时间

chgrp chgrp hd www 更改文件用户组 groupadd hd 创建组 groupdel hd 删除组

usermod 修改用户信息 usermod -G hd doobo 给doobo添加附加组

   usermod -G '' doobo 删除doobo的附加组

usermod -L doobo 锁定用户 usermod -U doobo 解锁用户

passwd -l doobo 锁定用户  passwd -u doobo  解锁用户

userdel 删除用户 userdel doobo --》userdel -r doobo删除doobo和它的home目录

chage 修改用户的属性,chage -m 3 doobo //多长时间才能修改密码

chage -M 10 doobo 多长时间必须修改密码

chage -W 2 doobo 密码到期前多长时间提醒我

chage -I 5 doobo 密码到期后宽限5天

chage -E 2018-2-20 doobo 帐号密码什么时候失效 0 立刻失效 -1 不失效

SUID设置 chmod 4755 /usr/biin/passwd  chmod 2755 indexdir //给目录设置sgid

chmod 1777 indexdir //只能删除自己建立的文件 设置sbit

acl setfacl -m u:u2:rwx acldir //给u2添加特殊权限

setfacl -m g:hd:rwx acldir  //给组添加特殊权限

setfacl -m m:r acldir  //给目录的mask添加读权限,相交其它权限

getfacl acldir//获取acldir目录的acl列表 ,只支持ext2到ext4格式磁盘

sudo /etc/sudoers  //visudo 进行编辑  doobo ALL=(ALL)  ALL 能任何地方,

替代任何用户,执行所有的命令,相当root帐号,但需要sudo passwd qq

doobo ALL=(root) /sbin/halt,/sbin/shutdown -h now  //添加指定命令

但必须使用sudo 加指定的命令执行

doobo ALL=(root) !/usr/bin/passwd,!/usr/bin/passwd root,

/usr/bin/passwd [a-zA-Z0-9]*  //给用户修改密码权限,不能修改root

Cmnd_Alias BAN = /sbin/shutdown -h now,!/usr/bin/passwd,...

baidu ALL=(root) BAN  //别名批量设置权限

User_Alias BANUSER = doobo,qq,baidu  //用户分组设置权限

%hd  ALL=(root) BAN  //给hd组添加权限

pkill pkill -kill -t pts/1 //踢出用户,通过w获取pts/1的值

write write doobo pts/0 --》hello --》Ctrl+D //给用户发送消息

wall wall "system will shutdown!"  //广播发送消息




6、环境变量,不在当前目录寻找

echo $PATH 输出环境变量

PATH=$PATH:/home/baidu 添加环境变量

./a.sh 执行当前文件夹内的脚本,必须加./

whereis ls 查看ls的所属文件

//软连接-快捷方式:

ln -s /user/local/baidu/baidu.sh /usr/bin/baidu



7、Linux磁盘分区:

sync 同步内存数据到磁盘

df 分区 df -h

fdisk 显示磁盘 fdisk -l

fdisk /dev/sdb //选择磁盘分区

n //新增分区

1 p //主分区 +5G //设置分区大小

t //修改分区结构  L//显示分区格式代码

mkfs 格式化 mkfs -t ext4 /dev/sdb1

mount 挂载 mkdir /mnt/sdb1 mount /dev/sdb1 /mnt/sdb1

卷标挂载 e2label /dev/sdb1 web //起卷标

         mount -L "web" /www //用卷标挂载

mount /dev/cdrom /media //挂载光驱

umount 弹出 umount /dev/sdb1

lsof 查看占用     lsof /mnt/sdb1

fatab 自动挂载,vim /etc/fstab 添加行:/dev/sdb1 /www ext4 defaults 0 0

卷标自动挂载:LABEL=www /www ext4 defaults 0 2

模拟挂载     mount -a //出错会提示


8、忘记root密码的解决方案和fstab文件查错

重启或启动---》》按...--》》按e--》选择kernel --》按e--》》输入single回车--》按b

mount -n -o remount,rw / //重新挂载根分区,可读可写

会进入单用户模式,使用passwd root 既可以修改root密码


9、压缩与解压缩,备份etc目录:

zip passwd.zip passwd  //压缩单个文件 zip -r passwd.zip passwd 递归压缩,压缩文件夹

unzip passwd.zip   //解压缩

gzip passwd   //压缩文件   gzip -r etc 递归压缩文件

gzip -d passwd.gz   //解压缩

bzip2 passwd   //压缩文件,不能递归压缩,自动删除源文件

bzip2 -d  passwd.bz2   //解压缩,自动删除压缩包 -k 保留

tar -j bzip2压缩 -z gzip压缩 -f 设置文件名

-c 新建打包文件 -v 显示执行过程

tar zcvf /tmp/root/passwd.tar.gz /tmp/root/passwd 压缩文件

tar zxvf passwd.tar.gz //解压缩,必须指定类型z或者j

tar zxvf passwd.tar.gz -C ~qq //解压到用户qq目录下

10、vim的常用方法:

1、yum install vim 安装vim  Esc 普通模式,命令输入

2、:set nu 显示行号  :set nonu  :set tabstop=2

3、i 当前插入  I行首插入 a 下一字符 A 行尾 o  下一行 O 上一行 u 撤销

   dd 剪切 p或P 粘贴  yy 复制  3yy 复制3行 5dd 剪切3行

4、:sh 退回命令行,exit继续进入编辑器 :sp b.txt 新开窗口 ctrl+w 上下键 切换编辑区

5、! 强制执行命令 :q! :wq! :x!

6、:w  b.txt 另存为

7、:0 :1 :2546 跳转到行 :/qq 查找qq :/n 向下查找 :?f 向上查找

8、:1,5s/$f/$a/g  从第一行到第五行执行替换,把$f替换为$a,全局替换

   :1,5s/$a/$b/gc 每次提示确定

9、:r b.txt 把b.txt的数据导入进来

10、:set autoindent  自动缩进 cd --> vi .vimrc --> set nu set autoindent set tabstop=2


11、软件安装与常用设置:

wget wget http://www.memcached.org/files/memcached-1.4.34.tar.gz //下载文件

tar --> ./configure --prefix=/usr/local/memcached--> make --> make install

或 make && make install

ldconfig //添加动态函数库到内存

/etc/ld.so.conf //动态函数包含的目录 vi /etc/ld.so.conf

rpm //安装特定软件,有数据库记录 rpm -qa  //显示安装的rpm软件

rpm -ivh mysql_686.rpm //安装rpm包

rpm -qa | egrep -i '^tree'  //查找以tree开头不屈服大小写的软件名

rpm -e 软件包名 //删除安装的软件包

yum yum install vim //通过源安装软件

修改yum的源地址:

cd /etc/yum.repos.d/ --> rm -rf *

http://mirrors.163.com/  //从新源下载新配置文件

wget -O /etc/yum.repos.d/CentOS-Base.repo

http://mirrors.aliyun.com/repo/Centos-6.repo

放入/etc/yum.repos.d/目录下

yum clean all

yum makecache  //更新源地址

yum search mysql //搜索软件

yum erase mysql  //卸载软件

yum -y update >/tmp/yum.log  & 更新系统,正常和错误的

信息多输出到文件,并且后台运行



12、任务计划,定时执行:

yum install at -->service atd start  //d是守护的意思mysqld、atd

at 12:49  --> touch /tmp/12.49.test --> ctrl+D 退出命令编辑

at -l 查看已经创建的任务 at -c 2 查看任务详细 at -d 4 删除任务

ls -ld / >/tmp/ls.txt  //把命令执行成功的结果输出到文件

vi /etc/at.allow  //配置允许执行at的用户 at.deny  //配置禁止执行at

crontab //周期性的任务

crontab -e  //添加任务

/etc/crontab  //管理员添加任务

crontab -l  //查看任务 crontab -r 删除任务

*/5 * * * *  ls / >>/tmp/ls.log //每五分钟执行一次

0 * * * * 每小时执行  0 0 * * 0  每周执行  0 0 1 1 *  每年执行

0 0 * * *  每天执行    0 0 1 * *  每月执行

32 20 6,10 * *  每月的6号10号的20:32分执行命令

watch watch cat /tmp/cron.log  //每两秒执行一下命令


13、进程管理

进程 运行中的程序

ps 查看服务 ps aux  或 ps aux |grep atd 或ps -l

pstree 进程关系树形显示pstree -p //显示进程ID -u 显示用户关系

jobs 查看后台进程

top 系统资源占用显示,用户数、内存、CPU、缓存信息等

shift+m 按内存使用大小排序 shift+p 按CPU排序

top -n 3 只刷新3次,就停止 top -d 10 10秒刷新一次

top -b -d 1 >/tmp/top.log //-b能写入文本,-d只跑一次

kill kill 1890  //结束进程,不保证绝对杀死

kill -9 1890 //强制结束进程

pkill pkill -9 ls  //按照进程的名字删除

killall killall -9 -i ls //按名字删,有确认提示

uptime 显示系统当前时间的用户数和CPU使用情况

程序-->载入内存+CPU(进程)-->服务  //临时工和门卫的关系

错误输出重定向 find / -name \*root\* 2>/dev/null //不显示错误信息

正确输出重定向 find / -name \*root\* 1>/tmp/find.log


14、linux的启动流程和服务的开机启动和关闭:

1、开机进入BOIS

2、选择启动磁盘、搜索MBR,进入系统,init pid 1

3、加载/etc/rc.sysinit  磁盘检测、网卡等

4、根据/etc/inittab文件,执行/etc/rc.d/rc*.d对应的文件,

定义启动级别,图形,命令行界面,K不启动服务

5、再执行/etc/rc.d/rc.local,出现登录界面,可以添加开机启动命令

6、chkconfig --list //查看对应的服务在不同等级开启的情况

chkconfig --level 35 mysqld on  //3和5等级,mysql开启

7、/etc/init.d/ 所有服务所在目录,可以自己添加服务

对应/etc/rc.d/init.d/ 的文件夹


15、VNC与图形化远程桌面配置:

系统必须支持图形桌面

yum install tigervnc-server.i686  //安装vnc

下载realvnc登录软件,能在不同平台远程登录

Linux配置VNC服务:

vi /etc/sysconfig/vncservers

VNCSERVERS="2:doobo 3:mysql 4:root"

vncpasswd doobo //设置doobo的vnc密码,在doobo下设置

/etc/init.d/vncserver start //启动vnc

service iptables stop    //关闭防火墙,防止连接失败

service iptables status  //查看防火墙状态

ps axf | grep vnc/iptables  //查看进程

VNC_View  使用192.168.0.116:2登录,不需要填写其它的信息


16、samba服务器的使用

yum -y install samba

//开特权,关闭防火墙

vi /etc/samba/smb.conf

security = share  -101行

找到Share Definitions,添加共享信息-250行

[doobo]

path=/tmp

public=yes  //匿名共享设置成功

testparm /etc/samba/smb.conf //检测配置文件是否正确

security = user  -101行

smbpasswd -a doobo //给用户设置smb密码

writable = yes //赋予写权限

create mode=0666 //修改分享文件的权限

directory mode=755 //修改目录的权限

valid users=doobo,qq //允许指定用户进入

valid user=@code //只允许code组的用户进入


17、IpTables的配置与使用(防火墙配置):

ACCEPT 让数据进来 DROP 丢弃数据包不告知

REJECT 丢弃并告知

iptables -P INPUT DROP //修改默认进来的包丢弃

iptables -A INPUT -j DROP //丢弃所有进来的数据包

iptables -F //清楚所有过滤规则

iptables -L -n --line-number //按序号有行号显示规则

iptables -A INPUT -s 192.168.3.200 -j DROP  //添加末尾阻止ip进入

iptables -I INPUt -s 192.168.3.202 -j DROP  //插入头部规则

intables -D INPUT 1 //删除第一条进入规则

iptables -A INPUT -p tcp --dport 22 -j ACCEPT  //允许TCP的22号端口

iptables -A INPUT -i eth0 -j DROP //配置指定网卡的规则


iptables -A OUTPUT -o eth0 -j DROP  //阻止指定网卡数据出站

iptables -A OUTPUT -p tcp --sport 80 -j DROP //阻止端口数据输出

应用:

iptables -A INPUT -p icmp -j DROP  //禁止ping服务器

service iptables save //保存规则到本地,重启依然有效

iptables-save>/etc/sysconfig/iptables //保存到文件,重启有效

telnet 192.168.3.120 25 //测试对应端口是否打开,ctrl+] 异常退出 ctrl+D 退出

编写脚本:

IPT="/sbin/iptables"


$IPT -F

$IPT -P INPUT DROP

$IPT -P FORWARD DROP

$IPT -P OUTPUT DROP


$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


$IPT -A INPUT -p tcp --dport 22 -j ACCEPT

$IPT -A OUTPUT -p tcp --dport 22 -j ACCEPT


$IPT -A INPUT -i lo -j ACCEPT

$IPT -A OUTPUT -o lo -j ACCEPT


#$IPT -A INPUT -p icmp -j ACCEPT 禁止Ping服务器

$IPT -A OUTPUT -p icmp -j ACCEPT


$IPT -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

#$IPT -A INPUT -p udp -m udp --sport 53 -j ACCEPT


$IPT -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

$IPT -A INPUT -p tcp --dport 80 -j ACCEPT


$IPT -A INPUT -p tcp --dport 21 -j ACCEPT

$IPT -A INPUT -p tcp --dport 10020:10040 -j ACCEPT


$IPT -A OUTPUT -p udp --dport 123 -j ACCEPT


#$IPT -A INPUT -j REJECT --reject-with icmp-host-prohibited

#$IPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited


service iptables save

service iptables restart


18、web服务器之httpd的安装调试

yum -y install httpd httpd-devel

paachectl start //启动apache service httpd start  /etc/init.d/httpd start

vi /etc/httpd/conf/httpd.conf //apache的主配置文件

ServerTokens Minor //配置成不显示服务器信息

ServerSignature Off/EMail//不显示服务信息或显示管理员邮箱

Timeout 60 //超时时间60秒

KeepAlive Off //是否持久化连接,一次连接多个资源

ServerName localhost  //设置服务器名字

Options FollowSymLinks 开启软链接,Options -FollowSymLinks 禁止软链接

Options -Indexes //不能查看网站目录列表

UserDir public_html  //能访问home下的public_html目录,如.../~doobo/

NameVirtualHost *:80 //多虚拟主机必开的配置项,匹配域名

var/log/httpd/ //apache的日志文件目录

var/www/html //apache的默认网站根目录

   多虚拟主机配置:

//主配置开启NameVirtualHost *:80

vi /etc/httpd/conf.d/virtual.conf

<VirtualHost *:80>

    ServerAdmin admin@163.com

    DocumentRoot /var/www/html

    ServerName www.hd.com

    ErrorLog logs/www.hd.com-error_log

    CustomLog logs/www.hd.com-access_log common

</VirtualHost>

<VirtualHost *:80>

    ServerAdmin admin@163.com

    DocumentRoot /bbs

    ServerName bbs.hd.com

    ErrorLog logs/bbs.hd.com-error_log

    CustomLog logs/bbs.hd.com-access_log common

</VirtualHost>

   重点(Tomcat和apache反向代理):

yum install gcc-c++ //编译jatka环境

yum install httpd-dev.rpm //扩展所需的apxs

jakarta-tomcat-connectors-1.2.15-src.tar.gz //下载转发包

tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz

cd jakarta-tomcat-connectors-1.2.15-src/jk/native

./configure --with-apxs=/usr/bin/apxs

make

cp ./apache-2.0/mod_jk.so /etc/httpd/modules/

在/usr/local/apache2/conf.d/下面建立两个配置文件mod_jk.conf和workers.properties

vi mod_jk.conf

JkWorkersFile /etc/httpd/conf.d/workers.properties

JkLogFile /tmp/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel info

# Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

JkMount /myapp/* worker1 #*/

JkMount /*.jsp worker1 #*/

vi workers.properties

#Defining a worker named worker1 and of type ajp13

worker.list=worker1

# Set properties for worker1

worker.worker1.type=ajp13

worker.worker1.host=localhost

worker.worker1.port=8009

worker.worker1.lbfactor=50

worker.worker1.cachesize=10

worker.worker1.cache_timeout=600

worker.worker1.socket_keepalive=1

worker.worker1.socket_timeout=300

在/etc/httpd/conf/http.conf里面开启

LoadModule jk_module modules/mod_jk.so