How to get the PID, process name, command line of the current terminal window session? [closed] - linux

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 2 years ago.
Improve this question
I was trying to find out, how do i get the pid, process name, command line of the current terminal(what is running in the background and got started with that terminal)?

By running:
echo $$
15925
You will get the process ID of your current session. Using this process ID, you can then run:
ps -ef | grep 15925
foo 14870 15925 0 10:32 pts/6 00:00:00 sleep 120
foo 14871 15925 0 10:32 pts/6 00:00:00 ps -ef
foo 14872 15925 0 10:32 pts/6 00:00:00 grep --color=auto 15925
foo 15925 15919 0 Nov23 pts/6 00:00:08 -bash
The second column will show the parent process (15925) and the second the parent

Related

why use "use -elf" the result return username with "systemd+"? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 7 months ago.
Improve this question
when I use docker run -itd mysql,then to use ps -elf check the process infomation with "4 S systemd+ 257584 257561 1 80 0 - 712611 poll_s Jul17 ? 00:40:16 mysqld".
root#xx:/proc/257584/ns# ps -elf | grep mysqld
4 S systemd+ 257584 257561 1 80 0 - 712611 poll_s Jul17 ? 00:40:20 mysqld
root#xx:/proc/257584/ns# ps -el | grep mysqld
4 S 999 257584 257561 1 80 0 - 712611 poll_s ? 00:40:21 mysqld
But I use "cat /cat/passwd" can't find username equal to "systemd+".
docker Version: 20.10.12
os ubuntu20.04
ps (sadly) trims the username to 8 (if i'm counting right) characters and adds a + after the user name initial part. The username could be systemd-mysql or systemd-something that you can find in passwd.
From manual:
If the length of the username is greater than the length of the display column, the username will be truncated. See the -o and -O formatting options to customize length

How to log timestamp before every line in log? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 3 years ago.
Improve this question
I want to log memory usage every 5th second and hence I am using free -s 5 -m> memory.log
How to add timestamp before every lie in this log?
Expected output:
Tue Jan 21 06:50:44 UTC 2020
total used free shared buffers cached
Mem: 7809 6268 1540 0 57 3497
-/+ buffers/cache: 2713 5095
Swap: 0 0 0
Tue Jan 21 06:50:49 UTC 2020
total used free shared buffers cached
Mem: 7809 6268 1540 0 57 3497
-/+ buffers/cache: 2713 5095
Swap: 0 0 0
I found out that there is no single line command to do that and this can be achieved by writing and executing a script.
So the shell script is:
#!/bin/bash -e
echo " date time $(free -m | grep total | sed -E 's/^ (.*)/\1/g')" >> /var/log/memory_utilisation.log
while true; do
echo "$(date '+%Y-%m-%d %H:%M:%S') $(free -m | grep Mem: | sed 's/Mem://g')" >> /var/log/memory_utilisation.log
sleep 5
done

Why use (ps -f&) to display process information, and then display the PPID of 1 instead of the PID of the main shell (-bash)? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 3 years ago.
Improve this question
When I use (ps -f&) to display the process information, I found that its PPID is 1, I am confused, why is it not the PID of the main shell (-bash)? I continued to execute the same command twice, and produced a strange process ([bash] <defunct>) with the following output:
The first test:
[root#localhost ~]# (ps -f&)
UID PID PPID C STIME TTY TIME CMD
root 2078 2076 0 01:44 pts/0 00:00:00 -bash
root 2244 1 0 03:07 pts/0 00:00:00 ps -f
The second test:
[root#localhost ~]# (ps -f&)
UID PID PPID C STIME TTY TIME CMD
root 2078 2076 0 01:44 pts/0 00:00:00 -bash
root 2245 2078 0 03:07 pts/0 00:00:00 [bash] <defunct>
root 2246 1 0 03:07 pts/0 00:00:00 ps -f
I tested it many times and found that the [bash] <defunct> process rarely appears (occasionally), but the PPID of the ps -f process is always 1.
My question is:
Why is the PPID of ps -f 1 instead of the PID of the main shell (-bash)?
What is the strange [bash] <defunct> process? Why didn't it appear in the first test?
When you do ( ps -f & ) with the ampersand, the subshell doesn't wait on the ps process so chances are it'll exit sooner than ps. If it does, ps no longer has a parent who'd reap its exit status with wait/waitpid/waitid so what happens on UNIXes is such processes (so called orphan processes) get reparented, normally to the init process (pid == 1) (Linux also allows for the concept of subreapers other than init).
What you're seeing in the second test is a temporary zombie. When a child process exits, it becomes a zombie ([defunct]) until its parent reaps its exit information. You must have caught the subshell at a moment where it exited but its parent (your main shell) hasn't managed to reap its exit info yet. Unless the parent shell is blocked in some way from continuing and thereby reaping the exit info, this should be only a temporary, transient state.

Difference between pidof and pgrep? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 4 years ago.
Improve this question
I'm not sure why pidof doesn’t work, but pgrep works.
$ pidof squid
returns nothing
$ pgrep squid
returns 3322
How can I get the 3322 using pidof?
pidof will return details regarding the name of a actual program whereas pgrep will return details regarding any processes that match the provided pattern. This is clearly stated in the man pages of both tools.
pidof [-s] [-c] [-n] [-x] [-m] [-o omitpid[,omitpid..]] [-o omitpid[,omitpid..]..] program [program..]
vs.
pgrep [options] pattern
When you're looking for the executable squid, pgrep can match it because the pattern matches /usr/bin/squid*. Whereas pidof cannot find a program called squid, because the Squid daemon is likely called something like /usr/bin/squid-server.
For example, here I'm looking at the output of ps and looking for programs running with the name systemd within them:
$ ps -eaf | grep systemd
root 1 0 0 Sep03 ? 00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 425 1 0 Sep03 ? 00:00:03 /usr/lib/systemd/systemd-journald
root 480 1 0 Sep03 ? 00:00:00 /usr/lib/systemd/systemd-udevd
dbus 630 1 0 Sep03 ? 00:00:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root 648 1 0 Sep03 ? 00:00:00 /usr/lib/systemd/systemd-logind
pgrep is able to find them as well:
$ pgrep -l systemd
1 systemd
425 systemd-journal
480 systemd-udevd
648 systemd-logind
But pidof only finds the first one:
$ pidof systemd
1
That's because the PID 1, has the name /usr/bin/systemd.

w command : meaning of ":0" and ":0:0" in FROM field [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 9 years ago.
Improve this question
What do ":0" and ":0:0" mean in the FROM field ? I'm curious.
USER TTY FROM LOGIN# IDLE JCPU PCPU WHAT
oddjob tty7 :0 18:18 10:03m 3:36 0.07s gdm-session-worker [pam/gdm3]
oddjob tty1 21:45 18:17 47.25s 0.00s xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc :1 -auth /tmp/serverauth.g2M3EzPqao
oddjob pts/0 :0 20:00 1.00s 0.45s 0.00s script
oddjob pts/1 :0.0 21:05 58:46 0.04s 0.04s /bin/bash
:0 is the first X connection, and :0.0 is the first screen of the first X connection.

Resources