Investigating and managing process
Multi-user and Multi-tasking
What a process is
How to manage processes
Use job control tools
-----------------------------------------
ps -ef 查看所有进程
显示格式:UID PID PPID C STIME TTY TIME CMD
USER: 行程拥有者 PID: pid
PPID:Parent PID C: CPU占用率
STIME:进程开始时间 TTY:终端号
CMD:启动进程的命令
ps -aux
-a includes processes on all terminals
-x includes processes not attached to terminals
-u prints process owner information
显示格式:USER PID PPID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者 PID: pid
%CPU: 占用的 CPU 使用率 %MEM: 占用的MEM使用率
VSZ: 占用的虚拟MEM大小 RSS: 占用的物理MEM大小
TTY: 终端号 STAT: 该进程的状态
START: 进程开始时间 TIME: 执行的时间
COMMAND:所执行的命令
sleep 50000 --休眠
ps -ef | grep sleep --查看sleep进程
kill -signal pid --杀进程 或者 ctrl+c
Sending Signals to Processes
By PID: kill [-signal] pid ...或者ctrl+c
By Name: killall [-signal] name...
By pattern: pkill [-signal] pattern
--------------------------------
uname -a 查看系统信息
Linux server141.guodu.net2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64x86_64x86_64 GNU/Linux
Linux bank.guodu.net 2.6.9-5.ELsmp#1 SMP Wed Jan 5 19:30:39 EST 2005 i686i686 i386 GNU/Linux
uname-n 查看系统名称
fdisk-l 查看系统分区情况
第一块是硬盘情况(sda,sdb,sdc...盘名称),第二块是分区情况(序号1,2,3...第几个分区)
Graphical Network Configuration
1 | 2 |
3 | 4 |
4块网卡:eth0,eth1,eth2,eth3
方法一:
1,命令行:setup 会出现操作的图形界面
2,选择network configuration
3,选择网卡
4,设置ip
本地网络和虚拟机要一致
让配置生效:service network restart--重启网络服务 |stop|start
------------
方法二:
修改/etc/sysconfig/network-scripts/ifcfg-ethX (网卡名)
Dynamic Configuration
DEVICE=ethX
HWADDR=0:02:8A:A6:30:45
BOOTPROTO=dhcp动态ip
ONBOOT=yes 启动时激活网卡
Type=Ethernet
Static Configuration
DEVICE=ethX
HWADDR=0:02:8A:A6:30:45
IPADDR=192.168.0.254
NETMASK=255.255.255.0
GATEWAY=192.168.2.254
ONBOOT=yes
Type=Ethernet
----------------------------
注意:要修改/ifcfg-ethX:x文件的DEVICE名称
方法三:
配置虚拟ip临时的ip,重启后消失。
ifconfig eth0:1 192.168.199.99 netmask 255.255.255.0 up
Command 第一个配置的网卡 ip 子网掩码 up
最多配4个网卡就够了
------------------------
修改时间和日期
GUI: system-config-date
System->Administration->Date & Time
CLI:
例:#date 01011330
# date 010113302007.05
ping 192.168.0.206
Ifconfig –a
netstat –n ??????????????????
-----------------
linux不能直接读取U盘,要先挂载
挂载U盘方式:
1,fdisk –l 查看U盘盘符(例如 /dev/u001)
---mount /dev/u001(优盘名称)
2,mkfs –t ext3 /dev/u001(优盘格式)
3,mkdir /root/mymnt (建挂载的目录)
4,mount –t ext3 /dev/u001 /root/mymnt
5,cd /root/mymnt (访问U盘)
6,umount (卸载,要在上一级目录卸载)
---------------------------
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
显示系统中CPU最“敏感”的任务列表,该命令可以按CPU
使用(P)和内存使用(M)对任务进行排序。
dir/ls 显示远程的目录文件。 bin 以二进制方式进行传输。
asc 传送文本文件。 get/mget 从远程机取一个或多个文件。
put/mput 向远程机送一个或多个文件。 prompt 打开或关闭多个文件传送时的交互提示。
bye 关闭FTP会话。 hash 在传输时以#表示传输的字节数。
rpm -q vsftpd查看包是否存在
( 到iso中找相关的包)
rpm -vih vsftpd-2.0.5-10.el5.i386.rpm
-i install
-v view
-h hash(#)
rpm -e XXX 卸载已经打好的包
-e delete
rpm -q XXX 查询都打了那些包
-q query
rpm -qpl XXX:列出RPM软件包内的文件信息;
rpm -qpi XXX:列出RPM软件包的描述信息;
把telnet包打上
1,rpm -vih xinetdxxx.rpm 先安xinetd
2,rpm -vih telnet-serverxxx.rpm
3,关闭防火墙
setup进入关闭
然后
service iptables restart --重启防火墙
4,修改/etc/xinetd.d/telnet的disable设为no
5,重启xinetd服务
#service xinetd restart
6,使用root登录的话,还需要 mv /etc/securetty /etc/securetty.bak
---------------
设置vsftpd权限
修改 /etc/vsftpd/ 的相关文件 ftpusers,user_list
之后重启:service vsftpd restart
设置linux为中文字体
打包:fonts-chinese-3.02-12.el5.noarch.rpm
rpm -vih fonts-chinese*.rpm
-----
rpm -qa telnet-server ---查已经打上的所有的telnet包
Environment Variables
The system software provides several default environment variables whose values can be customized
Temporarily change the environment variables at the command line, affecting only the current shell
Permanently changes it by modifying the initialization files
-----/etc/
永久环境变量
vi profile(添加hi=hello)
export hi
source profile
echo $hi(显示出hello)
临时环境变量
go=dog
echo $go (显示dog)
------------------oracle
安装oracle方法见 Oracle10g Install for Redhat5.6.doc
1,由root用户进入oracle
#su - oracle
2,打开监听
$lsnrctl start/stop/status
3,以dba用户登录
$sqlplus / as /sysdba
4,开启ems
SQL>startup/shutdown [immediate] ---ems已开启
5,
SQL>select * from emp;
6,退出oracle
SQL>exit
$vi .bash_profile (将 ems-->ems1)
$source .bash_profile
$sqlplus / as sysdba
SQL>startup --ems1
SQL>exit
$lsnrctl stop
shell scripting
Creating Shell Scripts
Step 1: Use such as vi to create atext file containing commands
#!/bin/bash
Step2: wirtethe scripts
Comments start with a #
Step 3: Make the script executable:
$ chmod u+x myscript.shStep4: Execute the shell scripts
sh myscript.sh
./ myscript.sh
例子:
#!/bin/bash
# This script displays some information about your environment
echo "Greetings. The date and time are $(date)"
echo "Your working directory is: $(pwd)"
if Statements
if ....; then ….
if ....; then
….
else
….
fi
if ....; then
....
elif ....; then
....
else
....
fi
通常用“ [ ] ”来表示条件测试。注意这里的空格很重要。要确保方括号的空格。 两边都要有空格
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
test -x mysh.sh && echo exec|| echo noExec
若mysh.sh具有执行权限,则显示exec,否则显示noEcec
例子:
#!/bin/bash
if [ "$SHELL" = "/bin/bash" ]; then
echo "your login shell is the bash (bourne again shell)"
else
echo "your login shell is not bash but $SHELL"
fi
---------------------------------
for loops
Performs actions on each member of a set of values
for ….
do ….
done
例子:
for NAME in joe jane julie
do
echo hello, $NAME!
done
其他shell 例子
#!/bin/bash
read -p "please input your name: " name
echo "hi, " $name
echo $1 $2
echo $1 $2 返回的是命令行后面跟的第一个和第二个参数
Shell script application
退出登录时执行 echo sh logDate.sh>>~/.base_logout (将logDate.sh信息加到.base_logout中)
系统启动时执行 echo sh logDate.sh >>/etc/rc.d/rc.local
登录时执行 echo sh logDate.sh >> ~/.bash_profile
打开终端时执行 echo sh logDate.sh >>~/.bashrc
Scheduling a Process To Execute Later
crontab
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
应用场景:证券、银行、保险、电信
使用方式 :
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 vi
-r : 删除目前的时程表
-l : 列出目前的时程表
时程表的格式如下 :
f1 f2 f3 f4 f5 program
f1 是表示分钟(0-59)
f2 表示小时(0-23)
f3 表示一个月份中的第几日(1-31)
f4 表示月份(1-12)
f5 表示一个星期中的第几天(0-6,其中0代表星期日)
program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推
例子:
每月每天每小时的第 0 分钟执行一次 /bin/ls :
0 * * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
0-59/20 6-12 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
crontab步骤:
Step1: contab –e
Step2: write some tasks use vi
Step3: crontab –l | grep XXX
使用者也可以将所有的设定先存放在file 中,用 crontab file 的方式来设定时程表。
下面这个方法比较好:
Step1: vi file
Step2: crontab file (若没有这步,查看的文件内容为没修改前的内容)
Step3: crontab –l | grep XXX (查看文件内容)
Redhat Package Manager
putty
xmanager/vnc
Start Xmanager Service
注意大小写
Step1:修改/etc/gdm/custom.conf
[security]
DisallowTCP=false
[xdmcp]
Enable=true
Port=177
Step2:修改/usr/share/gdm/defaults.conf
AllowRoot=true
AllowRemoteRoot=true
Step3:关闭系统的防火墙
[root@localhost root]# setup
选择:“firewall configuration”
选择:security level——“disabled”
Step4: 重启系统 reboot
SSH Secure File Transfer Client
filezilla
Start FTP Service (上面已经有了,这里是从ppt里copy出来的)
Step1:从安装盘找vsftpd-2.0.5-10.el5.i386.rpm安装
[root@localhost root]#rpm -ivh vsftpd-2.0.5-10.el5.i386.rpm
Step2:开启服务
[root@localhost root]cd /etc/rc.d/init.d
[root@localhost root]service vsftpd start
500 OOPS: cannot change directory:/home/root
500 OOPS: child died
解决办法: # setsebool ftpd_disable_trans 1
# service vsftpd restart
推荐书籍
linux两本书:
循序渐进linux
鸟哥的私房菜