邢栋博客

邢栋博客,Action博客,记录工作和生活中的点点滴滴

linux查看当前登陆用户和踢除正在登陆的其他用户
linux查看当前登陆用户和踢除正在登陆的其他用户

查看当前登陆的用户
[root@Action ~]# who
root     pts/1        2015-12-03 16:44 (113.31.72.140)
root     pts/0        2015-12-03 09:09 (113.31.72.140)

查看用户登陆占用的进程
[root@Action ~]# ps -ef|grep pts/0
root      5673   887  0 09:09 ?        00:00:00 sshd: root@pts/0 
root      5675  5673  0 09:09 pts/0    00:00:00 -bash
root      6053  6030  0 16:45 pts/1    00:00:00 grep pts/0

杀掉进程
[root@Action ~]# kill -9 5673 

再查看
[root@Action ~]# ps -ef|grep pts/0
root      6055  6030  0 16:46 pts/1    00:00:00 grep pts/0
[root@Action ~]# who
root     pts/1        2015-12-03 16:44 (113.31.72.140)

linux开机流程、模块管理与Loader学习笔记
重点回顾 

开机流程主要是 BIOS MBR Loader kernel+initrd /sbin/bin等流程
Loader具有提供选择菜单、加载核心档案、转交控制权给其他loader等功能

ls --format=single-column -F /boot
列出来的
initramfs-2.6.32-431.23.3.el6.x86_64.img 虚拟文件系统档
vmlinuz-2.6.32-431.23.3.el6.x86_64* 核心档案

boot loader 可以安装在MBR或者每个分割槽的boot sector 区域中
initrd 可以提供核心在开机过程中所需要的最重要的模块,通常与磁盘及文件系统有关的模块
如果你的linux是安装在IDE接口的硬盘上,并且使用默认的ext2/ext3文件系统,那么需要initrd,如果根目录在特殊的磁盘接口(USB SATA SCSI),或者是你的文件系统为特殊(LVM,RAID),则需要


init的配置文件为 /etc/initab,此档案可以设定默认 runlevle ,系统初始化脚本,不同执行等级的服务启动等
0关机 6 重启
level 1 单人维护模式,用在系统出问题时维护
level 3 完整含有网络功能的纯文本模式
level 5 与3相似,但加载使用 x window

vim /etc/inittab
id:3:initdefault:  //默认是3
ca::ctrlaltdel:/sbin/shutdown -t3 -r now //是否允许按下ctrl+alt+del 就重新启动的设定项目

init的处理流程
1.取得runlevel ,5
2.使用/etc/rc.d/rc.sysinit进行系统初始化
如取得网络环境与主机类型
测试与挂载内存装置/proc 及USB装置
决定是否使用selinux
设置系统时间 /etc/sysconfig/clock 
用户自定义模块的加载 /etc/sysconfig/modules/

/etc/sysconfig/*
authconfig  //主要是规范使用者的身份认证的机制
clock //linux主机的时区
i18n //设定一些语系的使用方面
network //可以设定是否启动网络,以及主机名还有通信闸
network-scripts/ 设定网络卡

3.由于runlevel是5,则进行 l5:5:wait:/etc/rc.d/rc5.d/
rc5.d/K??* 开头的档案,并进行 stop动作
rc5.d/S??* 开头的档案,并进行start动作
/etc/rc.d/rc.local //用户自定义开机启动程序

4.设定好ctrl+alt+del 组合键
5.设定不断电系统的pf pr 两种机制
6.启动mingetty的六个终端
7.最终以/etc/X11/perfdm -nodaemon 

核心与核心模块
核心 /boot/vmlinuz-2.6.32-431.23.3.el6.x86_64
核心解压缩所需RAM DISK /boot/initramfs-2.6.32-431.23.3.el6.x86_64.img
核心模块  /lib/modules/{版本}/kernel/  或者 lib/module$(uname -r)/kernel
核心原始码 /usr/src/linux(要安装才会有)

额外的装置与模块对应,可写入 /ec/modprobe.conf
核心模块管理
depmod  //建立档案
例如
cp a.ko /lib/module/$(uname -r)/kernel/drivers/net
depmod
————————————————————
lsmod //查看目前加载的模块
————————————————————
modinfo
例子
modinfo mii //列出mii这个模块的相关信息
————————————
insmod //
例子
insmod /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko //尝试加载这个模块
lsmod |grep cifs
____________
rmmod 
rmmod cifs //模块移除
————————————————————
modprobe 
modprobe cifs //加载cifs模块,不需要完整的模块文件名


grub的配置文件与相关文件系统定义档大多与/boot/grub目录中,配置文件名为menu.list(为grub.conf的软连接)
grub是目前实用最广泛的linux开机管理程序。
grub对磁盘的代号设定与linux不同,主要透过侦测的顺序来给予设定。如果(hd0)及(hd0,0)
menu.list内每个选择菜单与tile有关,直接指定核心开机时,至少需要 kernel及initrd两个选择
menu.list内设定loader控制权移交时,最重要者为chainloader+1这个项目
查看menu.list
vim  /boot/grub/menu.lst 
default=0 //默认开机选项,使用第一个开机选单
timeout=5 //五秒未动键盘,使用默认选单开机
splashimage=(hd0,0)/boot/grub/splash.xpm.gz//背景图示所在的档案
hiddenmenu //读秒期间是否显示完整的选单画面
title CentOS (2.6.32-431.23.3.el6.x86_64)
        root (hd0,0) //核心档案的位置
        kernel /boot/vmlinuz-2.6.32-431.23.3.el6.x86_64 ro root=UUID=94e4e384-0ace-437f-bc96-057dd64f42ee rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet  //核心的档案名
        initrd /boot/initramfs-2.6.32-431.23.3.el6.x86_64.img //initrd制作出 RAM DISK的档案名
~                                                                  

若想要重建initrd,可使用mkinitrd处理
例如
mkinitrd -v initrd_$(uname -r) $(uname -r) //新建
ll initrd_*
mkinitrd -v --with=8139too initrd_actiontest $(unamr -r) //增加这个模块到档案

重新安装grub到MBR或boot sector时,可以利用grub shell来处理
例子
grub-install /dev/hda
grub-install --root-directory=/home /dev/hd3
安装grub到MBR上面去
info grub
例子
grub
grub>root(hd0,0)
grub>find /grub/stage1
grub>setup (hd0)
grub>setup (hd0,0)
grub>quit

为个别选单加上密码
grub-md5-crypt //生成密码复制到
vim /etc/boot/grub/menu.lst ,粘贴到 title 底下第一行
如果整体加,则在timeout 后面
password --md5 生成的密码

若要进入救援模式,可与开机选菜单过程中,在kernel的项目后面加入 single 或者 init=/bin/bash 等方式来进入救援模式
可以对grub的个人选单给予不同的密码

忘记root密码
开机进入grub选单后,在你想要进入的选单上面点'e'进入详细设定
grub edit > kernel /vmlinuz-2.6.32-431.23.3.el6.x86_64 ro root=LABLE=/rhgb quiet single  //进入单人维护模式

init配置文件错误
grub edit > kernel /vmlinuz-2.6.32-431.23.3.el6.x86_64 ro root=LABLE=/rhgb quiet init=/bin/bash
mount -o remount,rw /
mount -a


linux常见日志文件
linux常见日志文件

/var/log/cron  //crontab日志文件
/var/log/dmesg //记录系统在开机的时候内核检测过程所产生的各项信息
/var/log/lastlog //记录系统上面的所有帐号最近一次登录系统时的相关信息
/var/log/maillog 或 /var/log/mail/*  //记录邮件的往来资讯
/var/log/messages  //记录系统发生的错误信息
/var/log/secure  //记录牵涉到登录口令的软件,su,sudo,ssh,telnet
/var/log/wtmp, /var/log/faillog  //记录正确登陆系统者的帐号资讯 (wtmp) 与错误登陆时所使用的帐号资讯 (faillog) 
/var/log/httpd/*, /var/log/news/*, /var/log/samba/* //

rsyslog配置文件
配置文件 /etc/rsyslog.conf 
启动配置文件 /etc/sysconfig/rsyslog

取/etc/rsyslog.conf其中一段
*.info;mail.none;authpriv.none;cron.none   /var/log/messages //不记录的信息
mail.*    -/var/log/maillog //减号代表先存到内存,等数据量大的时候再写入磁盘
cron.*     /var/log/cron

日志文件的轮替(logrotate)
这个程序的参数配置文件地址
/etc/logrotate.conf
/etc/logrotate.d/

测试logrotate的操作
logrotate [-vf] logfile  
//-v启动显示模式,会显示logrotate运行的过程
//-f 不论是否符合配置文件的数据,强制每个日志文件都进行rotate的操作
logrotate -v /etc/logrotate.conf  //
logrotate -vf /etc/logrotate.conf //强制执行
 

初识linux系统服务
初识linux系统服务(daemons)

主要是记录下自己的一些理解

daemon的主要分类

stand_alone :可以自行单独启动服务,如httpd vsftpd
启动脚本主要放在/etc/init.d/  ----这是个软连接,实际地址 /etc/rc.d/init.d/
立即启动可以 用service 这个命令
service --status-all //显示出目前系统上面所有服务的运行状态

super daemon: 一个特殊的daemon来统一管理 ,如telnet
启动脚本主要放在 /etc/xinetd.d/*,配置文件在/etc/xinetd.conf
由于是经过一个统一的xinetd来管理,可以具有类似防火墙管理功能
如 配置
vim /etc/xinetd.d/rsync 
此外,管理的连接机制可以分为muti-threaded 以及single-threaded 

若想要统一管理防火墙,可以通过 /etc/hosts.{allow,deny},若安装TCP Wrappers时,还能够使用额外的spawn功能等
vim /etc/hosts.deny  
rsync:127.0.0.1:deny  //服务名称:ip或主机名:操作,由于是在hosts.deny下,deny操作可不写 
查看是否支持TCP Wrappers功能
ldd $(which sshd ) //包含 libwrap.so

若想要设置开机时启动某个服务时,可以通过 chkconfig,ntsysv命令
chkconfig [--add|--del] [服务名称]

开机过程(简易)
1.打开计算机电源,开始读取 BIOS 并进行主机的自我测试;
2.透过 BIOS 取得第一个可启动装置,读取主要启动区 (MBR) 取得启动管理程序;
3.透过启动管理程序的配置,取得 kernel 并加载内存且侦测系统硬件;
4.核心主动呼叫 init 程序;
5.init 程序开始运行系统初始化 (/etc/rc.d/rc.sysinit)
6.依据 init 的配置进行 daemon start (/etc/rc.d/rc[0-6].d/*)
7.加载本机配置 (/etc/rc.d/rc.local)

设置开机启动级别 vim /etc/inittab 


初识 selinux

初识 selinux
selinux 三种模式
enforcing //强制模式
permissive //宽容模式
disabled // 关闭

selinux的启动与关闭
vim /etc/selinux/config
修改
SELINUX=enforcing
SELINUXTYPE=targeted
并且
vim /boot/grub/menu.lst
去掉
selinux=0

getenforce //显示出目前的模式
sestatus  [-vb] //selinux的策略
setenforce [0|1]  //0为permissive 1为enforcing,无法在 disabled切换

重置selinux安全上下文
chcon 是通过指定的方式来处理安全上下文的类型数据
chcon [-R] [-t type] [-u user] [-r role] 文件
chcon [-R] --reference=范例文件  文件
例子1
chcon -t httpd_sys_content_t /var/www/html/index.html
ll -Z /var/www/html/index.html
例子2
chcon --reference=/etc/passwd /var/www/html/index.html
ll -Z /var/www/html/index.html

restorecon [-Rv] 文件或目录  使用默认的安全下文来还原,-R 连同子目录一起修改 -v将过程显示在屏幕上
restorecon -Rv /var/www/html/index.html

selinux所需要的服务

setroubleshoot 将错误信息写入 /var/log/messages
chkconfig --list setroubleshoot
chkconfig setroubleshoot on
cat /var/log/messages |grep setroubleshoot
sealert -l ********************

auditd 将详细数据写入/var/log/audit/audit.log
chkconfig --list auditd
chkconfig auditd on
audit2why < /var/log/audit/audit.log

selinux的策略与规则管理

策略查阅
seinfo [-Atrub] 
-A 列出状态、规则布尔值、身份识别、角色、类型等 
-t 列出所有类型type
-r 列出所有角色role
-u 列出所有身份标识user
-b 列出所有规则的种类 布尔值
seinfo -b|grep httpd

sesearch [-a] [-s 主体类型] [-t 目标类型] [-b 布尔值]
sesearch -a -t httpd_sys_content_t //找出目标文件资源为httpd_sys_content_t的有关信息
sesearch -s httpd_t -t httpd_* -a  //找出主体进程为httpd_t 且目标文件类型为httpd相关的所有信息
sesearch -b httpd_enable_homedirs -a

布尔值的查询与修改
getsebool [-a] [布尔值条款]
getsebool -a 
setsebool [-P] 布尔值=[0|1]
getsebool httpd_enable_homedirs
setsebool -P httpd_enable_homedirs=0

默认目录的安全上下文查询与修改
semanage {login|user|port|interface|fcontest|translation} -l
semanage fcontext -{a|d|m} [-frst] file_spec  //主要用在安全上下文方面的用途 -l查询-a增加-m修改-d删除

semanage fcontext -l //查询默认安全上下文设置
semanage fcontext -a -t public_content_t "/srv/samba (/.*)?"
semanage fcontext -l |grep '/srv/samba'



linux 进程以及系统资源的相关命令
linux 进程以及系统资源的相关命令

ps aux //查看系统所有的进程
ps -lA //也能够查看系统的数据
ps axjf //连通部分进程树状态
ps aux | grep nginx
ps aux | egrep '(nginx|mysqld)'

pstree -A //列出目前系统上面所有的进程树的相关性
pstree -Aup //同时显示出PID与users

kill -SIGHUP PID
killall -9 httpd //强制终止所有以httpd启动的进程

关于进程的执行顺序
调整优先级 
PRI(new) = PRI(old) + nice //PRI越低代表越优先 
nice -n -5 vi & //新执行的命令给予新的nice值
renice 10 18625 //renice [number] PID 已存在进程的nice重新调整

系统资源的查看

查看内存使用情况
free -m //MB

查看系统与内核相关信息
uname // uname -a // uname -s

查看系统启动时间与工作负载
uptime

跟踪网络
netstat
netstat -tlnp //找出目前系统已经在监听的网络连接及其pid

分析内核产生的信息
dmsg | more  //  dmsg |grep -i hd

检测系统资源的变化
vmstat -d // -fs 内存相关 -a cpu/内存信息

通过文件或者文件系统找出正在使用该文件的程序
fuser -uv .  //fuser -uv  /home/xingdong

列出被进程所打开的文件名
lsof
lsof -u root -a -U  //列出关于root的所有进程打开的socket文件
lsof +d /dev
lsof -u root |grep bash  

找出某个正在执行的进程的PID
pidof init syslogd
pidof nginx 

linux下搭建git服务器
windows 下安装git客户端
windows 下 生成 公钥
右击 选择 git bash
ssh-keygen -t rsa // 生成地址 C:\Users\Administrator\.ssh\id_rsa.pub

linux下
useradd  git
在 /home/git/下新建 .ssh/authorized_keys
把id_rsa.pub 传到 /home/git/下
cd /home/git/
cat id_rsa.pub >> .ssh/authorized_keys //收集所有需要登录的用户的公钥  id_rsa.pub 把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。 

先选定一个目录作为Git仓库,假定是/alidata/www/gitserver/action.git,在/alidata/www/gitserver/目录下输入命令
git init --bare action.git
chown -R git:git action.git
禁用shell登录
vim /etc/passwd
git:x:503:503::/home/git:/bin/bash
改为:
git:x:503:503::/home/git:/usr/bin/git-shell


在 window下 
进入 d:\wamp\www\learngit\
右击 选择 git bash
克隆
git clone git@123.57.204.35:/alidata/www/gitserver/action.git
cd action 
vim index.php
git add index.php
git commit -m 'add index.php'
git push -u origin master 
linux 常用管道命令
linux 常用管道命令
1.cut
cut -d '分隔字符' -f fields
cut -c 字符范围
例子
echo $PATH | cut -d ':' -f 5
echo $PATH | cut -d ':' -f 3,5
export | cut -c 12-

2.grep
grep [-acinv] [--color=auto] '查找字符串' filename
-c 查找字符串的次数
-v 反向选择,显示没有查找字符串内容的那一行
例子
last | grep 'reboot'
last | grep -v 'root'
last | grep 'root' |cut -d ' ' -f1 //仅列出一列
grep --color=auto 'MANPATH' /etc/man.config

3.排序命令
sort //排序
例子
cat /etc/passwd | sort
cat /etc/passwd | sort -t ':' -k 3 //-k 一那个区间来进行排序
uniq //去重
例子
last | cut -d ' ' -f1 | sort |uniq
last | cut -d ' ' -f1 | sort |uniq -c //进行计数
wc
-c //多少行 -w //多少字 -m //多少字符
例子
cat /etc/man.config | wc

4.tee //双从重定向
tee [-a] file // -a 以累加的方式
last | tee last.list | cut -d ' ' -f1
ll | tee  llfile |more
ll | tee -a  llfile |more

5. 字符串转换命令
tr col join paste expand 

tr  [-ds] SET1 // -d 删除信息当中的set1 这个字符串
last | tr '[a-z]' '[A-Z]' //把小写替换为大写
cat /etc/passwd | tr -d

col [-xb] //-x 将tab转换为对等的空格键
cat /etc/man.config | col -x | cat -A | more

join [-ti12] file1 file2 //处理之前先经过排序,否则对比的项目会被略过
join -t ':' /etc/passwd /etc/shadow

paste [-d] file1 file2
paste /etc/passwd /etc/shadow

expand [-t] file //将tab 按键转为空格键
grep '^MANPATH' /etc/man.config | head -n 3 | expand -t 6 - | cat -A


6.切割命令 split
split [-bl] file PREFIX //-b切割成的文件大小 -l以行数来进行切割

cd /tmp;split -b 300K /etc/termcap termcap
ls -al | split -l 10 -lsroot
wc -l lsroot*

7.参数代换 xargs
xargs [-0epn] command
-e 当xargs分析到这个字符串时,就会停止继续工作
-p 在执行没个命令的参数时,都会询问用户的意思
find /sbin -perm +7000 | xargs ls -l

8.减号 -
tar -cvf - /home | tar -xvf - //后面的-是取前面命令的stdout



优惠券
广告位-淘宝
最新微语