当前位置:  技术问答>linux和unix

请教关于Linux下的进程管理

    来源: 互联网  发布时间:2017-02-19

    本文导语:  本帖最后由 qwersss 于 2012-04-17 13:11:31 编辑 最近在L1nux下学习进程管理,遇到了一些问题,想在这里请教一下大家: 1.在/proc//stat里有一个字段是sessi0n id,这个值和/proc//sessi0nid里的值不一样,这是为什么?到底哪一个是正确的...

本帖最后由 qwersss 于 2012-04-17 13:11:31 编辑
最近在L1nux下学习进程管理,遇到了一些问题,想在这里请教一下大家:

1.在/proc//stat里有一个字段是sessi0n id,这个值和/proc//sessi0nid里的值不一样,这是为什么?到底哪一个是正确的? 我在man proc里没有找到关于文件sessi0nid的解释;

2.如何能够判断一个进程是32或64 bit的?我查看了一些资料,似乎通过一些配置,32bit的程序在64bit平台上市可以运行起来的;

3.通过lsof -p,怎样可以判断哪些是进程动态加载的库?虽然通过文件名与路径可以判断,但是我觉得这样不是一个很稳妥的方式.我认为所有FD为mem,TYPE为REG的文件,就应该是动态库文件了,请问一下大家怎么觉得呢?

我刚接触Linux不久,可能问题比较幼稚.之前在网上搜索也没有找到期望的答案,很多搜索到的解释都比较笼统,所以在这里提问,希望大家能不吝赐教 ^.^

|

1、
/proc/%d/sessionid  这个确实是sessionid
对应内核函数

static ssize_t proc_sessionid_read(struct file * file, char __user * buf,
  size_t count, loff_t *ppos)
{
...
length = scnprintf(tmpbuf, TMPBUFLEN, "%u", audit_get_sessionid(task));
...
}


/proc/%d/stat 里面并没有找到什么代表sessionid的东西,不过有一个sid,你可能把sessionid和sid搞混了
对应内核函数
static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,struct pid *pid, struct task_struct *task, int whole)
{
...
sid = task_session_nr_ns(task, ns);
...
seq_printf(m, "%d (%s) %c %d %d %d %d %d %u %lu 
%lu %lu %lu %lu %lu %ld %ld %ld %ld %d 0 %llu %lu %ld %lu %lu %lu %lu %lu 
%lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ldn",
pid_nr_ns(pid, ns),
tcomm,
state,
ppid,
pgid,
sid,
tty_nr,
tty_pgrp,
task->flags,
min_flt,
cmin_flt,
maj_flt,
cmaj_flt,
cputime_to_clock_t(utime),
cputime_to_clock_t(stime),
cputime_to_clock_t(cutime),
cputime_to_clock_t(cstime),
priority,
nice,
num_threads,
start_time,
vsize,
mm ? get_mm_rss(mm) : 0,
rsslim,
mm ? mm->start_code : 0,
mm ? mm->end_code : 0,
(permitted && mm) ? mm->start_stack : 0,
esp,
eip,
/* The signal information here is obsolete.
 * It must be decimal for Linux 2.0 compatibility.
 * Use /proc/#/status for real-time signals.
 */
task->pending.signal.sig[0] & 0x7fffffffUL,
task->blocked.sig[0] & 0x7fffffffUL,
sigign      .sig[0] & 0x7fffffffUL,
sigcatch    .sig[0] & 0x7fffffffUL,
wchan,
0UL,
0UL,
task->exit_signal,
task_cpu(task),
task->rt_priority,
task->policy,
(unsigned long long)delayacct_blkio_ticks(task),
cputime_to_clock_t(gtime),
cputime_to_clock_t(cgtime));
...
}


所以归根到底你的问题应该是sessionid和sid有什么区别
看内核结构体
struct task_struct {
...
/* namespaces */
struct nsproxy *nsproxy;
...
#ifdef CONFIG_AUDITSYSCALL
uid_t loginuid;
unsigned int sessionid;
#endif
...
}


audit_get_sessionid 直接返回的是task_struct 的sessionid; task_session_nr_ns 返回的是 nsproxy里的pid_ns;
可以看出sessionid 只有在CONFIG_AUDITSYSCALL开启时才会有,sid总是存在,2者并没有什么必然联系。

|
1. 在我的机器上,以当前的终端打开的bash为例:
$ ps -eo sess,pid,fname | grep bash
30789 30789 bash
所以bash的session id和pid都为30789;
2. 查看sessionid
$cat /proc/30789/sessionid
2
这个2不知道是什么意思?查看/proc/30789/stat中的确实是session id,这个sessionid的文件保存的不知道是什么。



    
 
 

您可能感兴趣的文章:

  • 高手请教!linux怎样通过pid获取进程信息,如:进程名、进程状态等?
  • 请教,进程通讯问题,除了父子进程能进行通讯外,任意两个进程都可以吗?
  • 请教--父进程监控子进程,欢迎高手进来探讨!!!
  • 请教一个关于子进程和父进程竞争的问题
  • 请教急:shell怎么实现进程监控,重启进程
  • 请教如何编程实现父进程产生多个子进程
  • 请教:进程创建和进程状态有关问题
  • 请教:在Linux下怎么样检测一个进程是否是僵尸进程??
  • 小妹请教各位大哥,在unix下,如何显示进程,和kill掉进程?
  • Linux下请教一个父进程杀死子进程的问题.
  • 各位大侠,请教一个LINUX存储管理的问题,在页换出时系统要锁住正在被换出的进程,若系统不锁住该进程,会发生什么状况?
  • 请教一个多进程编程问题
  • 请教怎么根据进程输出的日记文件内容判断来重起进程?
  • 请教:子进程关闭
  • 请教进程问题
  • 请教LINUX下建立子进程的问题(急急急)!!!
  • 请教一个父子进程控制的问题
  • 请教进程与变量的问题
  • 请教进程通信
  • 请教:如何利用shell script 去 kill 某个进程
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 向linux达人请教linux下5.1声道测试工具
  • 请教一下,如果想在linux下开发java,选哪个版本的linux好一点
  • 小弟想请教,如果现在不像装linux了怎样把linux的分区改回ntfs格式的?
  • 请教:linux启动盘和一张盘的linux有何区别?
  • 请教linux高手,在Linux
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 初次接触linux,关于linux 用户权限问题请教!
  • 请教linux 下的adsl拨号问题.
  • 【请教】LINUX 下SNMP的MIB开发
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 小弟想请教,如果现在不像装linux了怎样把linux的分区改回ntfs格式的? iis7站长之家
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教,如何用虚拟订机安装liux
  • 请教一个opengl的问题
  • 请教unix常用命令命令问题
  • 请教两个shell
  • 请教高手:如何用gnome/gtk编写托盘程序
  • 请教semop()函数的用法、含义
  • 请教个,关于C编译器参数CFLAGS的问题(真诚请教,分不够了全部送出)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3