ubuntu的脚本运行时的进程号怎么看?用ps aux也任务管理器找不到进程脚本名字

博客访问: 2467656
博文数量: 1137
注册时间:
Oracle 10g OCM
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
MY_VERSION="1.0Beta"# maintain_report.sh - Generate a system
maintain check up report about a Linux machine#
# Set path
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/usr/sbin:/bin
# Specify custom (source) script, if
usedCUSTOM_SCRIPT="/usr/local/sbin/sr_custom_script"echo "$(date
+'%Y-%m-%d %k:%M:%S') Status report v$MY_VERSION for $HOSTNAME"echo "Written
by Arno van Amersfoort"
"--------------------------------------------------"
uname -afree
export TERM=vt100; /usr/bin/top -b
-n 1 |grep -i '^CPU'if [ -e /proc/mdstat ]; then
echo "---------------"
echo "| RAID status |"
echo "---------------"
if [ -x /sbin/mdadm ]; then#
/sbin/mdadm --detail --scan 2>&1#
DEGRADED=0
MISMATCH=0
while read LINE; do
printf "$LINE"
if [ -n "$(echo "$LINE" |grep 'active raid')" ]; then
DEV="$(echo "$LINE" |awk '{ print $1 }')"
(mm_cnt=$(cat /sys/block/$DEV/md/mismatch_cnt)"# Mismatch fixing (repair)
doesn't work yet with current 2.6.18 kernel, so no use in reporting errors
if [ "$(cat /sys/block/$DEV/md/mismatch_cnt)" != "0" ]; then
MISMATCH=$(($MISMATCH +1))
printf " (WARNING: Unsynchronised (mismatch) blocks!)"
if [ -n "$(echo
"$LINE" |grep '\(F\)')" ]; then
FAIL=$(($FAIL + 1))
printf " (WARNING: FAILED DISK(S)!)"
if [ -n "$(echo "$LINE"
|grep '\(S\)')" ]; then
printf " (Hotspare(s) available)"
(NOTE: No hotspare?!)"
if [ -n "$(echo "$LINE" |grep 'blocks')" ]; then
if [ -n "$(echo
"$LINE" |grep '_')" ]; then
DEGRADED=$(($DEGRADED + 1))
printf " (DEGRADED!!!)"
done < /proc/mdstat
$FAIL -gt 0 ]; then
echo "** WARNING: $FAIL
MD(RAID) array(s) have FAILED disk(s)! **"
if [ $DEGRADED -gt 0 ]; then
echo "** WARNING: $DEGRADED MD(RAID)
array(s) are running in degraded mode! **"
if [ $MISMATCH -gt 0
echo "** WARNING: $MISMATCH
MD(RAID) array(s) have unsynchronized (mismatch) blocks! **"
echo ""echo "---------------------"echo "|
S.M.A.R.T. status |"echo "---------------------"if which smartctl
2>&1 >/dev/ then
cat /proc/partitions |grep -e "sd.$" -e
"sd. " -e "hd.$" -e "hd. " |awk '{ print $4 }' |while read HDD; do
"/dev/$HDD: "
# Explicity turn on SMART on device:
smartctl -q silent -s on
smartctl -H -l error /dev/$HDD |tail -n5 |grep -v -e "^$" -e "Version"
-e "Device does not support" -e "Enable Save with" 2>&1
smartctl -H /dev/$HDD |grep -v -e '^$' |tail -n1
echo "smartctl binary not found (smartmontools not
installed?)"
echo ""echo
"------------------"echo "| DiskSpace info |"echo
"------------------"DF_WARNING=0
#Set IFS to EOL
#IFS=$'\n'
for LINE in `df -h -P -l -T --sync`; do
echo -n "$LINE"
if [ -n "$(echo "$LINE" |grep -v "Use%")" ]; then
free_perc=`echo "$LINE" |awk '{ print $6 }' |sed s,'%',,`
if [ $free_perc
-gt 90 ]; then
echo ' (At or near max.
capacity!)'
DF_WARNING=1
if [ "$DF_WARNING" = "1" ]; then
echo "** WARNING: One or more filesystems are at or near maximum
capacity! **"fi
if [ -d /var/log/fsck ]; then
echo "------------------"
echo "| Fsck boot logs
echo "------------------"
cat /var/log/fsck/*
echo ""echo "--------------------"echo
"| Hardware sensors |"echo "--------------------"if which sensors
2>&1 >/dev/ then
# Re-read configuration:
if [ -n "$(sensors -s )" ]; then
echo "** WARNING: Unable to
read hardware sensors (/etc/sensors.conf incorrect/missing?) **"
result=`sensors 2>&1`
echo "$result"
if [ -n "$(echo
"$result" |grep -e "ALARM")" ]; then
echo "** WARNING: One or more sensors show ALARM!
echo "sensors binary not found (lm-sensors not
installed?)"
echo ""echo "-----------------------"echo "| Kernel warnings
log |"echo "-----------------------"KERNEL_LOG="kwarnings.log"
[ ! -f "/var/log/$KERNEL_LOG" ]; then
echo "/var/log/$KERNEL_LOG does NOT
exist. Consider adding a line like"
echo "'kern.warn
/var/log/$KERNEL_LOG' to your syslog.conf"
"/var/log/$KERNEL_LOG.0" >"/tmp/$KERNEL_LOG" 2>/dev/null
cat "/var/log/$KERNEL_LOG" >>"/tmp/$KERNEL_LOG"
filesize=$(ls -l "/tmp/$KERNEL_LOG" |awk '{ print $5 }')
if [ $filesize -eq 0 ]; then
echo "(Empty)"
cat "/tmp/$KERNEL_LOG"
# Remove temp file
"/tmp/$KERNEL_LOG"
# Remove log files
"/var/log/$KERNEL_LOG.1" 2>/dev/null
mv "/var/log/$KERNEL_LOG.0"
"/var/log/$KERNEL_LOG.1" 2>/dev/null
mv "/var/log/$KERNEL_LOG"
"/var/log/$KERNEL_LOG.0" 2>/dev/null
>|"/var/log/$KERNEL_LOG"
echo ""echo
"------------------------"echo "| Available OS Updates |"echo
"------------------------"if which apt-get 2>&1 >/dev/
apt-get update -q=2 2>&1
echo "** Testing what
packages could be upgraded: **"#
apt-get upgrade -u --download-only -y -q
echo "apt-get binary not found (apt-get not installed?)"fi
echo ""echo
"-------------------"echo "| Chkrootkit info |"echo
"-------------------"if which chkrootkit 2>&1 >/dev/
chkrootkit -q >/tmp/chkrootkit_output.txt 2>&1
"$(cat /tmp/chkrootkit_output.txt)" ]; then
/tmp/chkrootkit_output.txt
echo "Nothing found"
/tmp/chkrootkit_output.txt
echo "chkrootkit binary not found (chkrootkit not
installed?)"fiif which clamscan 2>&1 >/dev/
echo "-----------------"
echo "| ClamAV status
echo "-----------------"
# Show clam version:
--version 2>&1
# Dummy run to see whether we're not
out-of-date:
echo "" |clamscan --quiet - 2>&1fiif [
-e /var/log/backup.log ]; then
"---------------"
echo "| Backup info |"
"---------------"
cat /var/log/backup.logfiif [ -e
"$CUSTOM_SCRIPT" ]; then. "$CUSTOM_SCRIPT"fi&&然后再给出那个sysdump脚本
#!/bin/bash
prog=$0;cat
<<EOF--------------------------------------------------------$prog
can be used to dump system information, including
- hardware
(/etc/sysconfig/hwconf)
- syslog (/var/log/messages)
- CPU (/proc/cpuinfo)
- memory (/proc/meminfo)
all info is
dumped into ./SYSINFO directory.
--------------------------------------------------------EOFdumpdir="/SYSINFO"if
[ -d $dumpdir ]; then
#echo "ERR: Old $dumpdir exists, please remove
$dumpdir, and run $prog again."
/bin/rm -rf $dumpdir
$dumpdirmkdir $dumpdir/proc# please speak English.unset LANG
# set -xhostname >&
$dumpdir/hostname.outhwclock >&
$dumpdir/date.outecho "dumping hardware info..."echo "dumping
CPU info..."cp /proc/cpuinfo $dumpdir/proc/cp /proc/cmdline
$dumpdir/proc/cp /proc/loadavg $dumpdir/proc/cp /proc/slabinfo
$dumpdir/proc/echo "dumping memory info..."cp /proc/meminfo
$dumpdir/proc/echo "dumping PCI info..."cp /proc/pci
$dumpdir/proc/lspci -vv >& $dumpdir/lspci.outecho "dumping
ifconfig info..."ifconfig >& $dumpdir/ifconfig.outifconfig -s
>& $dumpdir/ifconfig-s.outmii-tool >& $dumpdir/mii-tool.out
echo "dumping module info..."lsmod >&
$dumpdir/lsmod.out
echo "dumping device info..."cp /proc/devices
$dumpdir/proc/echo "dumping interrupt info..."cp /proc/interrupts
$dumpdir/proc/echo "dumping I/O info..."cp /proc/iomem
$dumpdir/proc/cp /proc/ioports $dumpdir/proc/echo "dumping partition
info..."cp /proc/partitions $dumpdir/proc/df >& $dumpdir/df.out
df -i >& $dumpdir/df-i.out
fdisk -l >&
$dumpdir/fdisk.out
sfdisk -s >& $dumpdir/sfdisk.out
"dumping net info..."cp -rf /proc/net $dumpdir/proc/netecho "dumping
uname..."uname -a >& $dumpdir/uname.outcp /etc/issue $dumpdir
cp /etc/hosts $dumpdir
cp /boot/grub/grub.conf
$dumpdirecho "dumping syslog..."top -b -n 1 >&
$dumpdir/top.txtlsof >& $dumpdir/lsof.txt
/var/log/cron.tgz
/var/spool/cron/lastlog >&
/var/log/lastlog.redflag
tar zcf $dumpdir/log.tgz
--exclude=/var/log/lastlog /var/logecho "dumping /etc..."tar zcf
$dumpdir/etc.tgz /etcecho "dumping HA4.0..."if [ -d /opt/RSIrsf
tar zcf $dumpdir/RSIrsf.tgz
/opt/RSIrsffiecho "dumping HA4.1..."if [ -d
/opt/redflag/hacluster ]then/usr/sbin/clplogcc -o $dumpdir#tar zcf
$dumpdir/hacluster.tgz /opt/redflag/haclusterfiecho "dumping normal
user crontab file..."tar zcf $dumpdir/cron.tgz /var/spool/cronecho
"other stuff..."free -m > $dumpdir/free.outcp /root/.bash_history
$dumpdir/bash_historylast > $dumpdir/last.outps auxw >
$dumpdir/ps-auxw.outps auxw --forest > $dumpdir/ps-auxw-forest.outps
-wef >$dumpdir/ps-wef.outipcs > $dumpdir/ipcs.outnetstat -ap >
$dumpdir/netstat-ap.outcp -f /etc/X11/XF86Config* $dumpdircp -r
/etc/X11/xorg.conf $dumpdirecho "Packaging..."tar zcf
sysinfo.tgz $dumpdirecho
"--------------------------------------------------------------------------------------"echo
"Please send ./sysinfo.tgz to [email][/email] for further
investigation, thanx."echo
"--------------------------------------------------------------------------------------"
阅读(724) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。linux ps aux查看进程,有的进程显示状态为停止,即stat那里显示为T,为什么会这样?_百度知道
linux ps aux查看进程,有的进程显示状态为停止,即stat那里显示为T,为什么会这样?
Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态。向进程发送一个SIGSTOP信号,它就会因响应该信号而进入TASK_STOPPED状态(除非该进程本身处于TASK_UNINTERRUPTIBLE状态而不响应信号)。(SIGSTOP与SIGKILL信号一样,是非常强制的。不允许用户进程通过signal系列的系统调用重新设置对应的信号处理函数。)向进程发送一个SIGCONT信号,可以让其从TASK_STOPPED状态恢复到TASK_RUNNING状态。当进程正在被跟踪时,它处于TASK_TRACED这个特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。比如在gdb中对被跟踪的进程下一个断点,进程在断点处停下来的时候就处于TASK_TRACED状态。而在其他时候,被跟踪的进程还是处于前面提到的那些状态。对于进程本身来说,TASK_STOPPED和TASK_TRACED状态很类似,都是表示进程暂停下来。而TASK_TRACED状态相当于在TASK_STOPPED之上多了一层保护,处于TASK_TRACED状态的进程不能响应SIGCONT信号而被唤醒。只能等到调试进程通过ptrace系统调用执行PTRACE_CONT、PTRACE_DETACH等操作(通过ptrace系统调用的参数指定操作),或调试进程退出,被调试的进程才能恢复TASK_RUNNING状态。linux 进程状态 百度可以去看 虽然我看的一知半解 应该就是意外中断导致的
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁ubuntu的ps -aux详细介绍 - 博客频道 - CSDN.NET
congqingbin的专栏
分类:ubuntu常用命令
显示其他用户启动的进程(a)
查看系统中属于自己的进程(x)
启动这个进程的用户和它启动的时间(u)
使用“date -s”命令来修改系统时间
比如将系统时间设定成日的命令如下。
#date -s 06/10/96
将系统时间设定成下午1点12分0秒的命令如下。
#date -s 13:12:00
------------------------------------------------------
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0
? S Nov05 0:04 init
root 2 0.0 0.0 0 0 ? SW Nov05 0:00 [keventd]
root 3 0.0 0.0 0 0 ? SW Nov05 0:00 [keventd]
------------------------------------------------------
USER域指明了是哪个用户启动了这个命令;
用户可以查看某个进程占用了多少CPU;
内存使用及其VSZ(虚拟内存大小)和RSS(常驻集大小):
VSZ表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
RSS指明了当前实际占用了多少内存;
STAT显示了进程当前的状态:
&S&:进程处在睡眠状态,表明这些进程在等待某些事件发生--可能是用户输入或者系统资源的可用性;
last命令可以有效的查看系统登录事件
在一个进程调用了exit之后,该进程并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构。在Linux进程的5种状态中,僵尸进程 是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他 进程收集,除此之外,僵尸进程不再占有任何内存空间。
系统调用exit的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁。
进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait
就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。
aux 中STAT 解释 收藏
aux 的到如下信息:
USER&&&&PID&&&%CPU
%MEM VSZ&&&RSS
TTY&&&&STAT&&&START
TIME COMMAND
smmsp 3521&&&0.0&&&&0.7&&&&&6556
1616&&&&&?&&&&&&&&Ss&&&&&&20:40
0:00 sendmail: Queue runner@01:00:00 f
root&&&&3532&&&&0.0&&&&&&&0.2&&&&&2428&&&&452&&&&&?&&&&&&&&Ss&&&&&&20:40
0:00 gpm -m /dev/input/mice -t imps2
htt&&&&&&&&3563&&&&0.0&&&&&&&0.0&&&&2956&&&&196&&&&&?&&&&&&&&Ss&&&&&&&20:41
0:00 /usr/sbin/htt -retryonerror&0
htt&&&&&&&&3564&&&&0.0&&&&&&&1.7&&&29460
3704&&&&&?&&&&&&&&Sl&&&&&&&&20:41
0:00 htt_server -nodaemon
root&&&&&&3574&&&&0.0&&&&&&&0.4&&&&&5236
992&&&&&?&&&&&&&&Ss&&&&&&&20:41
0:00 crond
xfs&&&&&&&&3617&&&&0.0&&&&&&&1.3&&&13572
2804&&&&&?&&&&&&&&Ss&&&&&&&20:41
0:00 xfs -droppriv -daemon
root&&&&&&&3627&&&0.0&&&&&&&0.2&&&&&3448&&&&552&&&&&?&&&&&&&&SNs&&&&&20:41
0:00 anacron -s
root&&&&&&3636&&&&0.0&&&&&&&0.1&&&&&2304&&&&420&&&&&?&&&&&&&&Ss&&&&&&&20:41
0:00 /usr/sbin/atd
dbus&&&&3655&&&&0.0&&&&&&&0.5&&&13840
1084&&&&&?&&&&&&&&Ssl&&&&&&&20:41
0:00 dbus-daemon-1 --system
....................................
stat 中的参数意义如下:
不可中断 Uninterruptible(usually IO)
正在运行,或在队列中的进程
处于休眠状态
停止或被追踪
进入内存交换(从内核2.6开始无效)
&&&X&&&死掉的进程
&&&&n&&&低优先级
&&&&s&&&包含子进程
&&&&&#43;&&&位于后台的进程组
======================================
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以 确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了.
&&&&&&&&&1)ps
a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定&A&参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的&#26684;式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t&终端机编号&  指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u  以用户为主的&#26684;式来显示程序状况。
13)ps x  显示所有程序,不以终端机来区分。
最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”)&process
注: 其它状态还包括W(无驻留页), &(高优先级进程), N(低优先级进程), L(内存锁页).
使用ps&#26684;式输出来查看进程状态:
ps -eo user,stat..,cmd
user 用户名
uid 用户号
pid 进程号
ppid 父进程号
size 内存大小, Kbytes字节.
vsize 总虚拟内存大小, bytes字节(包含code&#43;data&#43;stack)
share 总共享页数
nice 进程优先级(缺省为0, 最大为-20)
priority(pri) 内核调度优先级
pmem 进程分享的物理内存数的百分比
trs 程序执行代码驻留大小
rss 进程使用的总物理内存数, Kbytes字节
time 进程执行起到现在总的CPU暂用时间
stat 进程状态
cmd(args) 执行命令的简单&#26684;式
查看当前系统进程的uid,pid,stat,pri, 以uid号排序.
ps -eo pid,stat,pri,uid –sort uid
查看当前系统进程的user,pid,stat,rss,args, 以rss排序.
ps -eo user,pid,stat,rss,args –sort rss
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出&#26684;式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
&: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7
? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多 的资源等等。总之大部分信息都是可以通过执行该命令得到的。
ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。
kill 用于杀死进程。
1、ps 的参数说明
ps 提供了很多的选项参数,常用的有以下几个:
l 长&#26684;式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务&#26684;式来显示进程;
f 用树形&#26684;式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
我们常用的选项是组合是 aux 或 lax,还有参数 f 的应用。
2、ps aux 或 lax 输出的解释
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE&#20540;,数&#20540;大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS 驻留中页的数量;
TTY 终端ID
STAT 进程状态(有以下几种)
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;
& 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类&#20284; NPTL pthreads);
&#43; 位于后台的进程组;
WCHAN 正在等待的进程资源;
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;
3、应用举例
[root@localhost ~]# ps -aux |more
可以用 | 管道和 more 连接起来分页查看。
[root@localhost ~]# ps -aux & ps001.txt
[root@localhost ~]# more ps001.txt
这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more
来分页查看。
4、kill 终止进程
有十几种控制进程的方法,下面是一些常用的方法:
kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1
终止你拥有的全部进程。
SIGKILL 和 SIGSTOP 信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。
congqingbin
排名:第18114名
(22)(7)(8)(3)(12)(6)(2)(1)(2)(2)(0)(1)(3)(2)(2)(1)因为本人工作中要涉及到很多东西,审计(日志、数据神马的)、源代码审计、渗透测试、开发一大堆东西,有些东西,越是深入去做,越会发现,没有工具或脚本,工作起来是有多么的坑。
工作的这段时间,自己写了几个工具:Web日志分析、linux服务器安全检查脚本、webshell查杀和webshell文件监控工具,接下来找机会,我会慢慢的都给大家共享出来。
其实我遇到的情况,很多管理员都会遇到,一堆服务器,尤其是linux的,没办法像windows那样便捷,现成的工具也没有辣么多,有些工具呢,你还得装环境,但是,无论是在客户那里,还是在自己的服务器上,都不天愿意装一堆环境,纯手工检查吧,有点慢,也枯燥,所以诞生了这个脚本。
脚本大致内容:基本信息统计(IP地址、MAC地址、端口信息、服务信息等)、主机安全检查(包括等保三级要求主机相关的检查点)、系统性能统计(暂时未加入分析)、恶意代码、程序检查等检查点。
脚本内容涉及到:
1、查看系统密码文件修改时间
2、查看是否开启了ssh服务
3、查看系统SSH远程访问设置策略(host.deny拒绝列表)
4、查看shell是否设置超时锁定策略
5、查看syslog日志审计服务是否开启
6、查看syslog日志是否开启外发
7、查看passwd文件中有哪些特权用户
8、查看系统中是否存在空口令账户
9、PHP、JSP、perl、Python、HTML、以及linux下可执行文件内容的检查
里面列举了一些常见webshell、提权EXP、以及Python扫描工具、嗅探工具的特征,如果发现此类相关的文件,则会显示出来,或者拷贝一份到/tmp/目录下
例如:能扫描到的linux下提权工具:
一共是172个文件。都可以扫描的到。。。。
其实整个脚本相对起来比较简单,主要用到的命令为
find / -type
等命令组成。
比如说awk命令,我们用more或cat命令,读取某个文件内容,然后通过awk进行筛选和输出,来显示我们想要看的东西
more /etc/login.defs | grep -E "PASS_MAX_DAYS" | grep -v "#" |awk -F' ' &'{if($2!=90){print "/etc/login.defs里面的"$1 "设置的是"$2"天,请管理员改成90天。"}}'
从这里我们可以看到,通过more来打开/etc/login.defs文件,并查找关键字&PASS_MAX_DAYS&,用awk命令,筛选以&为分隔符的内容,用作判断,如果$2第二个分隔符位置的内容不等于90,则输出该内容。
同理,任意针对文件内容做筛选的结果,都可以通过这样的方式去显示我们想要显示的内容。
echo "查看系统中存在哪些非系统默认用户"
echo "root:x:&该值大于500为新创建用户,小于或等于500为系统初始用户&"
more /etc/passwd |awk -F ":" '{if($3&500){print "/etc/passwd里面的"$1 "的值为"$3",请管理员确认该账户是否正常。"}}'
echo ------------------------------------------------------------------------
if语句相关:
echo --------------------------------------------------------------------------
echo "检查系统文件完整性2(MD5检查)"
echo "该项会获取部分关键文件的MD5值并入库,默认保存在/etc/md5db中"
echo "如果第一次执行,则会提示md5sum: /sbin/portmap: 没有那个文件或目录"
echo "第二次重复检查时,则会对MD5DB中的MD5值进行匹配,来判断文件是否被更改过"
file="/etc/md5db"
if [ -e "$file" ]; then md5sum -c /etc/md5db 2&&1;&
md5sum /etc/passwd &&/etc/md5db
md5sum /etc/shadow &&/etc/md5db
md5sum /etc/group &&/etc/md5db
md5sum /usr/bin/passwd &&/etc/md5db
md5sum /sbin/portmap&&/etc/md5db
md5sum /bin/login &&/etc/md5db
md5sum /bin/ls &&/etc/md5db
md5sum /bin/ps &&/etc/md5db
md5sum /usr/bin/top &&/etc/md5
echo ----------------------------------------------------------------------
这里呢,对部分敏感文件的MD5值做了下验证,大致思路是,先检查/etc/md5db是否存在,如果不存在的话,则将所涉及文件的MD5值入库,并保存到/etc/md5db文件中,当我们第二次对服务器进行检查时,则会对比两次的MD5值,如果MD5值发生变化,则会进行提醒。
脚本本身没什么复杂的东西,我先贴出部分内容,供大家参考下。
#!/bin/bash
echo " & & & & (__)"
echo " & & & & (oo)"
echo " & /------\/ "
echo " &/ | & &|| &"
echo " * &/\---/\ &"
echo " & ~~ & ~~ & "
echo "...."Are You Ready?"..."
echo "警告:本脚本只是一个检查的操作,未对服务器做任何修改,管理员可以根据此报告进行相应的设置。"
echo ---------------------------------------主机安全检查-----------------------
echo "系统版本"
echo --------------------------------------------------------------------------
echo "本机的ip地址是:"
ifconfig | grep --color "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
echo --------------------------------------------------------------------------
awk -F":" '{if($2!~/^!|^*/){print "("$1")" " 是一个未被锁定的账户,请管理员检查是否需要锁定它或者删除它。"}}' /etc/shadow
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_MAX_DAYS" | grep -v "#" |awk -F' ' &'{if($2!=90){print "/etc/login.defs里面的"$1 "设置的是"$2"天,请管理员改成90天。"}}'
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_MIN_LEN" | grep -v "#" |awk -F' ' &'{if($2!=6){print "/etc/login.defs里面的"$1 "设置的是"$2"个字符,请管理员改成6个字符。"}}'
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_WARN_AGE" | grep -v "#" |awk -F' ' &'{if($2!=10){print "/etc/login.defs里面的"$1 "设置的是"$2"天,请管理员将口令到期警告天数改成10天。"}}'
echo --------------------------------------------------------------------------
grep TMOUT /etc/profile /etc/bashrc & /dev/null|| echo "未设置登录超时限制,请设置之,设置方法:在/etc/profile或者/etc/bashrc里面添加TMOUT=600参数"
echo --------------------------------------------------------------------------
if ps -elf |grep xinet |grep -v "grep xinet";then
echo "xinetd 服务正在运行,请检查是否可以把xinnetd服务关闭"
echo "xinetd 服务未开启"
echo --------------------------------------------------------------------------
echo "查看系统密码文件修改时间"
ls -ltr /etc/passwd
echo --------------------------------------------------------------------------
echo &"查看是否开启了ssh服务"
if service sshd status | grep -E "listening on|active \(running\)"; then
echo "SSH服务已开启"
echo "SSH服务未开启"
echo --------------------------------------------------------------------------
echo "查看是否开启了TELNET服务"
if more /etc/xinetd.d/telnetd 2&&1|grep -E "disable=no"; then
echo &"TELNET服务已开启 "
echo &"TELNET服务未开启 "
echo --------------------------------------------------------------------------
echo &"查看系统SSH远程访问设置策略(host.deny拒绝列表)"
if more /etc/hosts.deny | grep -E "sshd: ";more /etc/hosts.deny | grep -E "sshd"; then
echo &"远程访问策略已设置 "
echo &"远程访问策略未设置 "
echo --------------------------------------------------------------------------
脚本运行截图
主机安全检查
恶意程序、代码检查
关键文件修改时间查看
系统性能检查
完整脚本代码
#!/bin/bash
echo " & & & & (__)"
echo " & & & & (oo)"
echo " & /------\/ "
echo " &/ | & &|| &"
echo " * &/\---/\ &"
echo " & ~~ & ~~ & "
echo "...."Are You Ready?"..."
echo "警告:本脚本只是一个检查的操作,未对服务器做任何修改,管理员可以根据此报告进行相应的设置。"
echo ---------------------------------------主机安全检查-----------------------
echo "系统版本"
echo --------------------------------------------------------------------------
echo "本机的ip地址是:"
ifconfig | grep --color "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
echo --------------------------------------------------------------------------
awk -F":" '{if($2!~/^!|^*/){print "("$1")" " 是一个未被锁定的账户,请管理员检查是否需要锁定它或者删除它。"}}' /etc/shadow
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_MAX_DAYS" | grep -v "#" |awk -F' ' &'{if($2!=90){print "/etc/login.defs里面的"$1 "设置的是"$2"天,请管理员改成90天。"}}'
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_MIN_LEN" | grep -v "#" |awk -F' ' &'{if($2!=6){print "/etc/login.defs里面的"$1 "设置的是"$2"个字符,请管理员改成6个字符。"}}'
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_WARN_AGE" | grep -v "#" |awk -F' ' &'{if($2!=10){print "/etc/login.defs里面的"$1 "设置的是"$2"天,请管理员将口令到期警告天数改成10天。"}}'
echo --------------------------------------------------------------------------
grep TMOUT /etc/profile /etc/bashrc & /dev/null|| echo "未设置登录超时限制,请设置之,设置方法:在/etc/profile或者/etc/bashrc里面添加TMOUT=600参数"
echo --------------------------------------------------------------------------
if ps -elf |grep xinet |grep -v "grep xinet";then
echo "xinetd 服务正在运行,请检查是否可以把xinnetd服务关闭"
echo "xinetd 服务未开启"
echo --------------------------------------------------------------------------
echo "查看系统密码文件修改时间"
ls -ltr /etc/passwd
echo --------------------------------------------------------------------------
echo &"查看是否开启了ssh服务"
if service sshd status | grep -E "listening on|active \(running\)"; then
echo "SSH服务已开启"
echo "SSH服务未开启"
echo --------------------------------------------------------------------------
echo "查看是否开启了TELNET服务"
if more /etc/xinetd.d/telnetd 2&&1|grep -E "disable=no"; then
echo &"TELNET服务已开启 "
echo &"TELNET服务未开启 "
echo --------------------------------------------------------------------------
echo &"查看系统SSH远程访问设置策略(host.deny拒绝列表)"
if more /etc/hosts.deny | grep -E "sshd: ";more /etc/hosts.deny | grep -E "sshd"; then
echo &"远程访问策略已设置 "
echo &"远程访问策略未设置 "
echo --------------------------------------------------------------------------
echo &"查看系统SSH远程访问设置策略(hosts.allow允许列表)"
if more /etc/hosts.allow | grep -E "sshd: ";more /etc/hosts.allow | grep -E "sshd"; then
echo &"远程访问策略已设置 "
echo &"远程访问策略未设置 "
echo "当hosts.allow和 host.deny相冲突时,以hosts.allow设置为准。"
echo -------------------------------------------------------------------------
echo "查看shell是否设置超时锁定策略"
if more /etc/profile | grep -E "TIMEOUT= "; then
echo &"系统设置了超时锁定策略 "
echo &"未设置超时锁定策略 "
echo -------------------------------------------------------------------------
echo "查看syslog日志审计服务是否开启"
if service syslog status | egrep " active \(running";then
echo "syslog服务已开启"
echo "syslog服务未开启,建议通过service syslog start开启日志审计功能"
echo -------------------------------------------------------------------------
echo "查看syslog日志是否开启外发"
if more /etc/rsyslog.conf | egrep "@...\.|@..\.|@.\.|\*.\* @...\.|\*\.\* @..\.|\*\.\* @.\.";then
echo "客户端syslog日志已开启外发"
echo "客户端syslog日志未开启外发"
echo -------------------------------------------------------------------------
echo "查看passwd文件中有哪些特权用户"
awk -F: '$3==0 {print $1}' /etc/passwd
echo ------------------------------------------------------------------------
echo "查看系统中是否存在空口令账户"
awk -F: '($2=="!!") {print $1}' /etc/shadow
echo "该结果不适用于Ubuntu系统"
echo ------------------------------------------------------------------------
echo "查看系统中root用户外连情况"
lsof -u root |egrep "ESTABLISHED|SYN_SENT|LISTENING"
echo ----------------------------状态解释------------------------------
echo "ESTABLISHED的意思是建立连接。表示两台机器正在通信。"
echo "LISTENING的"
echo "SYN_SENT状态表示请求连接"
echo ------------------------------------------------------------------------
echo "查看系统中root用户TCP连接情况"
lsof -u root |egrep "TCP"
echo ------------------------------------------------------------------------
echo "查看系统中存在哪些非系统默认用户"
echo "root:x:&该值大于500为新创建用户,小于或等于500为系统初始用户&"
more /etc/passwd |awk -F ":" '{if($3&500){print "/etc/passwd里面的"$1 "的值为"$3",请管理员确认该账户是否正常。"}}'
echo ------------------------------------------------------------------------
echo "检查系统守护进程"
more /etc/xinetd.d/rsync | grep -v "^#"
echo ------------------------------------------------------------------------
echo "检查系统是否存在入侵行为"
more /var/log/secure |grep refused
echo ------------------------------------------------------------------------
echo "-----------------------检查系统是否存在PHP脚本后门---------------------"
if find / -type f -name *.php | xargs egrep -l "mysql_query\($query, $dbconn\)|专用网马|udf.dll|class PHPzip\{|ZIP压缩程序 荒野无灯修改版|$writabledb|AnonymousUserName|eval\(|Root_CSS\(\)|黑狼PHP木马|eval\(gzuncompress\(base64_decode|if\(empty\($_SESSION|$shellname|$work_dir |PHP木马|Array\("$filename"| eval\($_POST\[|class packdir|disk_total_space|wscript.shell|cmd.exe|shell.application|documents and settings|system32|serv-u|提权|phpspy|后门" |sort -n|uniq -c |sort -rn 1&/dev/null 2&&1;then
echo "检测到PHP脚本后门"
find / -type f -name *.php | xargs egrep -l "mysql_query\($query, $dbconn\)|专用网马|udf.dll|class PHPzip\{|ZIP压缩程序 荒野无灯修改版|$writabledb|AnonymousUserName|eval\(|Root_CSS\(\)|黑狼PHP木马|eval\(gzuncompress\(base64_decode|if\(empty\($_SESSION|$shellname|$work_dir |PHP木马|Array\("$filename"| eval\($_POST\[|class packdir|disk_total_space|wscript.shell|cmd.exe|shell.application|documents and settings|system32|serv-u|提权|phpspy|后门" |sort -n|uniq -c |sort -rn
find / -type f -name *.php | xargs egrep -l "mysql_query\($query, $dbconn\)|专用网马|udf.dll|class PHPzip\{|ZIP压缩程序 荒野无灯修改版|$writabledb|AnonymousUserName|eval\(|Root_CSS\(\)|黑狼PHP木马|eval\(gzuncompress\(base64_decode|if\(empty\($_SESSION|$shellname|$work_dir |PHP木马|Array\("$filename"| eval\($_POST\[|class packdir|disk_total_space|wscript.shell|cmd.exe|shell.application|documents and settings|system32|serv-u|提权|phpspy|后门" |sort -n|uniq -c |sort -rn |awk '{print $2}' | xargs -I{} cp {} /tmp/
echo "后门样本已拷贝到/tmp/目录"
echo "未检测到PHP脚本后门"
echo ------------------------------------------------------------------------
echo "-----------------------检查系统是否存在JSP脚本后门---------------------"
find / -type f -name *.jsp | xargs egrep -l "InputStreamReader\(this.is\)|W_SESSION_ATTRIBUTE|strFileManag|getHostAddress|wscript.shell|gethostbyname|cmd.exe|documents and settings|system32|serv-u|提权|jspspy|后门" |sort -n|uniq -c |sort -rn 2&&1
find / -type f -name *.jsp | xargs egrep -l "InputStreamReader\(this.is\)|W_SESSION_ATTRIBUTE|strFileManag|getHostAddress|wscript.shell|gethostbyname|cmd.exe|documents and settings|system32|serv-u|提权|jspspy|后门" |sort -n|uniq -c |sort -rn| awk '{print $2}' | xargs -I{} cp {} /tmp/ &2&&1&
echo ------------------------------------------------------------------------
echo "----------------------检查系统是否存在HTML恶意代码---------------------"
if find / -type f -name *.html | xargs egrep -l "WriteData|svchost.exe|DropPath|wsh.Run|WindowBomb|a1.createInstance|CurrentVersion|myEncString|DropFileName|a =|204.351.440.495.232.315.444.550.64.330" 1&/dev/null 2&&1;then
echo "发现HTML恶意代码"
find / -type f -name *.html | xargs egrep -l "WriteData|svchost.exe|DropPath|wsh.Run|WindowBomb|a1.createInstance|CurrentVersion|myEncString|DropFileName|a =|204.351.440.495.232.315.444.550.64.330" |sort -n|uniq -c |sort -rn
find / -type f -name *.html | xargs egrep -l "WriteData|svchost.exe|DropPath|wsh.Run|WindowBomb|a1.createInstance|CurrentVersion|myEncString|DropFileName|a =|204.351.440.495.232.315.444.550.64.330" |sort -n|uniq -c |sort -rn| awk '{print $2}' | xargs -I{} cp {} /tmp/
echo "后门样本已拷贝到/tmp/目录"
echo "未检测到HTML恶意代码"
echo "----------------------检查系统是否存在perl恶意程序----------------------"
if find / -type f -name *.pl | xargs egrep -l "SHELLPASSWORD|shcmd|backdoor|setsockopt|IO::Socket::INET;" 1&/dev/null 2&&1;then
echo "发现perl恶意程序"
find / -type f -name *.pl | xargs egrep -l "SHELLPASSWORD|shcmd|backdoor|setsockopt|IO::Socket::INET;"|sort -n|uniq -c |sort -rn
find / -type f -name *.pl | xargs egrep -l "SHELLPASSWORD|shcmd|backdoor|setsockopt|IO::Socket::INET;"|sort -n|uniq -c |sort -rn| awk '{print $2}' | xargs -I{} cp {} /tmp/
echo "可疑样本已拷贝到/tmp/目录"
echo "未检测到perl恶意程序"
echo "----------------------检查系统是否存在Python恶意程序----------------------"
find / -type f -name *.py | xargs egrep -l "execCmd|cat /etc/issue|getAppProc|exploitdb" |sort -n|uniq -c |sort -rn
find / -type f -name *.py | xargs egrep -l "execCmd|cat /etc/issue|getAppProc|exploitdb" |sort -n|uniq -c |sort -rn| awk '{print $2}' | xargs -I{} cp {} /tmp/
echo ------------------------------------------------------------------------
echo "-----------------------检查系统是否存在恶意程序---------------------"
find / -type f -perm -111 &|xargs egrep "UpdateProcessER12CUpdateGatesE6C|CmdMsg\.cpp|MiniHttpHelper.cpp|y4'r3 1uCky k1d\!|execve@@GLIBC_2.0|initfini.c|ptmalloc_unlock_all2|_IO_wide_data_2|system@@GLIBC_2.0|socket@@GLIBC_2.0|gettimeofday@@GLIBC_2.0|execl@@GLIBC_2.2.5|WwW.SoQoR.NeT|2.6.17-2.6.24.1.c|Local Root Exploit|close@@GLIBC_2.0|syscall\(\__NR\_vmsplice,|Linux vmsplice Local Root Exploit|It looks like the exploit failed|getting root shell" 2&/dev/null
echo ------------------------------------------------------------------------
echo "检查网络连接和监听端口"
netstat -an&
echo "--------------------------路由表、网络连接、接口信息--------------"
netstat -rn&
echo "------------------------查看网卡详细信息--------------------------"
ifconfig -a&
echo ------------------------------------------------------------------------
echo "查看正常情况下登录到本机的所有用户的历史记录"
echo ------------------------------------------------------------------------
echo "检查系统中core文件是否开启"
echo "core是unix系统的内核。当你的程序出现内存越界的时候,操作系统会中止你的进程,并将当前内存状态倒出到core文件中,以便进一步分析,如果返回结果为0,则是关闭了此功能,系统不会生成core文件"
echo ------------------------------------------------------------------------
echo "检查系统中关键文件修改时间"
ls -ltr /bin/ls /bin/login /etc/passwd /bin/ps /usr/bin/top /etc/shadow|awk '{print "文件名:"$8" &""最后修改时间:"$6" "$7}'
echo "ls文件:是存储ls命令的功能函数,被删除以后,就无法执行ls命令,黑客可利用篡改ls文件来执行后门或其他程序。
login文件:login是控制用户登录的文件,一旦被篡改或删除,系统将无法切换用户或登陆用户
user/bin/passwd是一个命令,可以为用户添加、更改密码,但是,用户的密码并不保存在/etc/passwd当中,而是保存在了/etc/shadow当中
etc/passwd是一个文件,主要是保存用户信息。
sbin/portmap是文件转换服务,缺少该文件后,无法使用磁盘挂载、转换类型等功能。
bin/ps 进程查看命令功能支持文件,文件损坏或被更改后,无法正常使用ps命令。
usr/bin/top &top命令支持文件,是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。
etc/shadow shadow 是 /etc/passwd 的影子文件,密码存放在该文件当中,并且只有root用户可读。"
echo --------------------------------------------------------------------------
echo "-------------------查看系统日志文件是否存在--------------------"
log=/var/log/syslog
log2=/var/log/messages
if [ -e "$log" ]; then
echo &"syslog日志文件存在! "
echo &"/var/log/syslog日志文件不存在! "
if [ -e "$log2" ]; then
echo &"/var/log/messages日志文件存在! "
echo &"/var/log/messages日志文件不存在! "
echo --------------------------------------------------------------------------
echo "检查系统文件完整性2(MD5检查)"
echo "该项会获取部分关键文件的MD5值并入库,默认保存在/etc/md5db中"
echo "如果第一次执行,则会提示md5sum: /sbin/portmap: 没有那个文件或目录"
echo "第二次重复检查时,则会对MD5DB中的MD5值进行匹配,来判断文件是否被更改过"
file="/etc/md5db"
if [ -e "$file" ]; then md5sum -c /etc/md5db 2&&1;&
md5sum /etc/passwd &&/etc/md5db
md5sum /etc/shadow &&/etc/md5db
md5sum /etc/group &&/etc/md5db
md5sum /usr/bin/passwd &&/etc/md5db
md5sum /sbin/portmap&&/etc/md5db
md5sum /bin/login &&/etc/md5db
md5sum /bin/ls &&/etc/md5db
md5sum /bin/ps &&/etc/md5db
md5sum /usr/bin/top &&/etc/md5
echo ----------------------------------------------------------------------
echo "------------------------主机性能检查--------------------------------"
echo "CPU检查"
dmesg | grep -i cpu
echo -----------------------------------------------------------------------
more /proc/cpuinfo
echo -----------------------------------------------------------------------
echo "内存状态检查"
vmstat 2 5
echo -----------------------------------------------------------------------
more /proc/meminfo
echo -----------------------------------------------------------------------
echo -----------------------------------------------------------------------
echo "文件系统使用情况"
echo -----------------------------------------------------------------------
echo "网卡使用情况"
echo ----------------------------------------------------------------------
echo "查看僵尸进程"
ps -ef | grep zombie
echo ----------------------------------------------------------------------
echo "耗CPU最多的进程"
ps auxf |sort -nr -k 3 |head -5
echo ----------------------------------------------------------------------
echo "耗内存最多的进程"
ps auxf |sort -nr -k 4 |head -5
echo ----------------------------------------------------------------------
echo ---------------------------------------------------------------------
echo "COPY RIGHT &鬼魅羊羔"
echo "QQ:"
echo ---------------------------------------------------------------------
关于脚本使用的几个问题
直接上传到服务器中,有时候出现中文乱码的情况
乱码情况解决办法:
dos文件转换成 unix 文件格式&
& & &dos 格式 文件 传输到 unix 系统时 , 会在每行的结尾多一个 ^M , 当然也有可能看不到 , 但是在 vi 的时候 , 会在下面显示此文件的格式 , 比如 & "dos.txt" [dos] 120L, 2532C 字样 , 表示是一个 [dos] 格式文件 , 如果是 MAC 系统的 , 会显示 [MAC] , 因为文件格式的原因有时会导致我们的 unix 程序 , 或者 shell 程序出现错误 , 那么需要把这些 dos 文件格式转换成 unix 格式 , 方法是&
& & &vi & dos.txt & & & & &
& & &:set fileformat=unix&
& & &:w & & & & & & & & & & &&
这样文件就转换成 unix 格式 文件了 ,一般在 windows 机器上编写好了文件传到 unix 下就可能会出现这样的情况 , 而一般我们使用 ftp 命令, 常常会加上 bin 参数表示二进制传输, 可是试一下不加 bin 参数 , 可能传到 unix 下就是 unix 格式
Linux打开txt文件乱码的解决方法
& Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致。Linux下使用的编码是utf8,而Windows使用的是gb18030。因此,解决Linux打开txt文件中文乱码可有如下两种方法。
& 方法一:
& 在附件终端中,进入到txt文件所在目录,使用命令符&iconv -f gb18030 &-t utf8 1.txt -o 2.txt&把gb18030编码的1.txt转换成utf8的2.txt。这样2.txt就成为Linux支持的编码。
& 方法二:
& 在附件终端中,使用命令符&gconf-editor&,进入环境配置,依次展开&/apps/gedit-2/preferences/encodings/&,编辑右侧的&auto_detected&将&gb18030&添加到最顶上。以后文本编辑器就可以正常显示中文了。
其实脚本还能增加很多实用的东西,由于最近事儿太多,就没做改动。
等这段时间忙完了,再上来更新新的东西。
阅读(...) 评论()

我要回帖

更多关于 wpe找不到游戏进程 的文章

 

随机推荐