I have application based on node server file. The path to it: Code: /var/www/clients/client11/web28/web/nodejs/biodermagame directory listing: Code: root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# ls biogame-server.js biogame-server-local.js biogame-server-prod.js config libs modules node_modules package.json package-lock.json webpack.node.js Server file is biogame-server-prod.js and it is running but somehow pidof function does not find the process id under: Code: root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-server-prod.js root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-server-prod.j root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-server-prod. root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-server-pro root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-server-pr root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-server-p root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-server- root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-server root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-serve root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-serv root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-ser root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-se root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame-s root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame- root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogame root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biogam root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof bioga root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof biog but under "bio": Code: root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# pidof bio 28405 root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# Server process is biogame-server-prod.js as shows attached screen from ProcessMonitor2 (pm2 for node servers). Does anybody know what happens? PS I wrote another example here.
I wrote thread here, because I think it's not related with node but with pidof function, which is Linux thing and here are many Linux specialists. I thought that maybe for some node servers is too long path and pidof cut some letters, because for one node server is path: Code: /var/www/clients/client11/web28/web/nodejs/biodermagame/biogame-server-prod.js and result of pidof is like I put in earlier post, but for example this server Code: /var/www/clients/client31/web91/web/quiz3m-server-prod.js has result without cutting any letters: Code: root@s1:~#pidof quiz3m-server-prod.js 22836 Another example with testing env node server: Code: /var/www/clients/client4/web4/web/tquiz3m/quiz3m-server-test.js has result with cutting letters: Code: root@s1:~#pidof quiz3m-server-tes 1763
There is output: Code: root@s1:~# ps -ef | grep -i bio root 8368 2084 0 10:37 ? 00:00:01 node /var/www/clients/client11/web28/web/nodejs/biodermagame/bio but there isn't server file called "bio": Code: root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame# ls -l total 412 -rw-r--r-- 1 web28 client11 816 Jun 21 13:54 biogame-server.js -rw-r--r-- 1 web28 client11 16063 Jun 21 13:54 biogame-server-local.js -rw-r--r-- 1 web28 client11 16384 Jun 25 11:22 biogame-server-prod.js drwxr-xr-x 3 web28 client11 4096 Jun 21 13:54 config drwxr-xr-x 2 web28 client11 4096 Jun 21 13:54 libs drwxr-xr-x 3 web28 client11 4096 Jun 21 13:54 modules drwxr-xr-x 773 root root 28672 Jun 25 10:12 node_modules -rw-r--r-- 1 web28 client11 1065 Jun 21 13:54 package.json -rw-r--r-- 1 web28 client11 332632 Jun 25 10:12 package-lock.json -rw-r--r-- 1 web28 client11 2272 Jun 21 13:54 webpack.node.js
Actually the process is node and not bio. The /var/www/clients/client11/web28/web/nodejs/biodermagam/bio is just the parameter of node. So it seems that node.js is cutting it off and not pidof. From what i have been reading this might have to do with how parameters are given to node.js. You might try to execute it manually in the following ways: run node.js with the entire path to the server as parameter go to the folder were the server is located and run node.js with only the servername (excluding the path) and see what the results into after doing another ps -ef | grep -i bio
When run: Code: node /var/www/clients/client11/web28/web/nodejs/biodermagame/biogame-server-prod.js I have - result of ps -ef | grep -i bio ("bio" in biodermagame and in biogame-server-prod.js are marked in red): Code: root 18428 3761 2 15:08 pts/0 00:00:01 node /var/www/clients/client11/web28/web/nodejs/biodermagame/biogame-server-prod.js pidof result: Code: root@s1:~# pidof biogame-server-prod.js root@s1:~# pidof /var/www/clients/client11/web28/web/nodejs/biodermagame/biogame-server-prod.js root@s1:~# pidof bio root@s1:~# --- When run from path /var/www/clients/client11/web28/web/nodejs/biodermagame where is stored server file: Code: root@s1:~# cd /var/www/clients/client11/web28/web/nodejs/biodermagame/ root@s1:/var/www/clients/client11/web28/web/nodejs/biodermagame#node biogame-server-prod.js pidof result: Code: root@s1:~# pidof bio root@s1:~# pidof biogame-server-prod.js root@s1:~# pidof /var/www/clients/client11/web28/web/nodejs/biodermagame/biogame-server-prod.js root@s1:~# result of ps -ef | grep -i bio: Code: root@s1:~# ps -ef | grep -i bio root 25403 3761 0 15:15 pts/0 00:00:01 node biogame-server-prod.js PS When I run this server using ProcessManager2, there is something funny: Code: root@s1:~# pm2 start /var/www/clients/client11/web28/web/nodejs/biodermagame/biogame-server-prod.js root@s1:~# ps -ef | grep -i bio root 26669 2084 0 15:20 ? 00:00:01 node /var/www/clients/client11/web28/web/nodejs/biodermagame/bio root@s1:~# ps -ef | grep 26669 root 26669 2084 0 15:20 ? 00:00:01 node /var/www/clients/client11/web28/web/nodejs/biodermagame/bio root@s1:~# pidof bio 26669 So it looks like ProcessManager cut letters but why...
Hmm... so in both cases it's actually showing the parameter completely, including the long path. So it's definitely not a node.js problem, neither a pidof problem. However when you run the application manually pidof is not finding anything...., it should be showing though if you run Code: pidof -x %scriptname% But the point of this test was to see if the scriptname would get cutoff or not, and it's not. What proces/application/script is responsible for starting the server? have a look at that, how it passes the parameter to node.js.
I uses ProcessManager2 (pm2), because then started node server works also when console is closed. So it looks like ProcessManager cut letters. Hmm...
So basically with Code: pm2 start %scriptname% How about trying with with the scriptname inside quotes?
Script name in form like below? Code: pm2 start %/var/www/clients/client11/web28/web/nodejs/biodermagame/biogame-server-prod.js%
no, in this form Code: pm2 start '/var/www/clients/client11/web28/web/nodejs/biodermagame/biogame-server-prod.js' I must immediately say i don't know pm2 that well (or at all ) but i read here and there a problem of passing these parameters without quotes inside javascripts to nodejs
All i can do now is to suggest you to raise an issue with pm2 on: https://github.com/Unitech/pm2/issues
Yea, very good idea. I suppose I will have to describe whole problem in details there. PS I have created some thread