turn off node.js?

I made a app.js on my online (not local) server then did ssh in terminal:

$ node app.js

which made my app live. now I want to update my code by uploading a new version of app.js but I can no longer modify replace it as it is being used by node (550 /public_html/foo/app.js: Permission denied)... how do i stop node? pkill node does not work as shown in another thread. basically I started my app after installing express, then when It was running I installed socket.io I'm not sure what is going on now.

-----update

[root@vps ~]# ps r
  PID TTY      STAT   TIME COMMAND
19350 pts/0    R+     0:00 ps r
[root@vps ~]# kill 19350 PID
-bash: kill: (19350) - No such process
-bash: kill: PID: arguments must be process or job IDs
[root@vps ~]# ps
  PID TTY          TIME CMD
 8987 pts/0    00:00:00 bash
19505 pts/0    00:00:00 ps
[root@vps ~]# ps aux | grep node
root     19551  0.0  0.0   7216   812 pts/0    S+   15:38   0:00 grep node
[root@vps ~]# kill -2 PID
-bash: kill: PID: arguments must be process or job IDs
[root@vps ~]# kill -0 PID
-bash: kill: PID: arguments must be process or job IDs
[root@vps ~]# kill 0 PID
-bash: kill: PID: arguments must be process or job IDs
[root@vps ~]# kill 19551 PID
-bash: kill: (19551) - No such process
-bash: kill: PID: arguments must be process or job IDs
[root@vps ~]# kill PID
-bash: kill: PID: arguments must be process or job IDs
[root@vps ~]# ps node
ERROR: Unknown user-defined format specifier "de".
********* simple selection *********  ********* selection by list *********
-A all processes                      -C by command name
-N negate selection                   -G by real group ID (supports names)
-a all w/ tty except session leaders  -U by real user ID (supports names)
-d all except session leaders         -g by session OR by effective group name
-e all processes                      -p by process ID
T  all processes on this terminal     -s processes in the sessions given
a  all w/ tty, including other users  -t by tty
g  OBSOLETE -- DO NOT USE             -u by effective user ID (supports names)
r  only running processes             U  processes for specified users
x  processes w/o controlling ttys     t  by tty
*********** output format **********  *********** long options ***********
-o,o user-defined  -f full            --Group --User --pid --cols --ppid
-j,j job control   s  signal          --group --user --sid --rows --info
-O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
-l,l long          u  user-oriented   --sort --tty --forest --version
-F   extra full    X  registers       --heading --no-heading --context
                    ********* misc options *********
-V,V  show version      L  list format codes  f  ASCII art forest
-m,m,-L,-T,H  threads   S  children in sum    -y change -l format
-M,Z  security data     c  true command name  -c scheduling class
-w,w  wide output       n  numeric WCHAN,UID  -H process hierarchy
[root@vps ~]# ps -A
  PID TTY          TIME CMD
    1 ?        00:00:01 init
    2 ?        00:00:00 kthreadd/141
    3 ?        00:00:00 khelper/141
  100 ?        00:00:00 udevd
  477 ?        00:01:13 syslogd
  488 ?        00:00:00 sshd
  496 ?        00:00:00 xinetd
  542 ?        00:00:00 crond
  550 ?        00:00:00 saslauthd
  552 ?        00:00:00 saslauthd
 2348 ?        00:00:00 master
 2351 ?        00:00:00 qmgr
 3170 ?        00:00:00 mailmanctl
 3172 ?        00:00:22 python
 3173 ?        00:00:23 python
 3174 ?        00:00:22 python
 3175 ?        00:00:22 python
 3176 ?        00:00:22 python
 3177 ?        00:00:23 python
 3178 ?        00:00:22 python
 3179 ?        00:00:00 python
 3934 ?        00:00:58 clamd.virtualmi
 4209 ?        00:00:00 mysqld_safe
 4291 ?        00:00:40 mysqld
 4556 ?        00:00:07 perl
 4618 ?        00:00:00 lookup-domain-d
 5017 ?        00:00:02 proftpd
 5309 ?        00:03:48 named
 8985 ?        00:00:00 sshd
 8987 pts/0    00:00:00 bash
12463 ?        00:00:00 httpd
12464 ?        00:00:00 httpd
12909 ?        00:00:00 httpd
14474 ?        00:00:00 httpd
15616 ?        00:00:00 pickup
16609 ?        00:00:00 crond
16612 ?        00:00:00 freshclam-sleep
16615 ?        00:00:00 sleep
19668 ?        00:00:00 proftpd
20226 ?        00:00:00 sshd
20227 ?        00:00:00 sshd
20228 pts/0    00:00:00 ps
31970 ?        00:00:04 httpd
[root@vps ~]# ps r
  PID TTY      STAT   TIME COMMAND
20359 pts/0    R+     0:00 ps r
[root@vps ~]# ps r -C
ERROR: List of command names must follow -C.
[root@vps ~]# ps -H
  PID TTY          TIME CMD
 8987 pts/0    00:00:00 bash
20475 pts/0    00:00:00   ps
[root@vps ~]# kill -20475
-bash: kill: 20475: invalid signal specification
[root@vps ~]# kill 20475
-bash: kill: (20475) - No such process
[root@vps ~]# ps
  PID TTY          TIME CMD
 8987 pts/0    00:00:00 bash
20725 pts/0    00:00:00 ps
[root@vps ~]# ps ~/
ERROR: Garbage option.
    [root@vps ~]# ps
  PID TTY          TIME CMD
 8987 pts/0    00:00:00 bash
20745 pts/0    00:00:00 ps
[root@vps ~]# kill 20745
-bash: kill: (20745) - No such process
[root@vps ~]# ps node
ERROR: Unknown user-defined format specifier "de".
[root@vps ~]# ps aux | grep node
root     20909  0.0  0.0   7216   812 pts/0    S+   15:56   0:00 grep node
[root@vps ~]# kill poo
-bash: kill: poo: arguments must be process or job IDs
[root@vps ~]# kill -2  PID
-bash: kill: PID: arguments must be process or job IDs
[root@vps ~]# ps grep
ERROR: List of process IDs must follow p.
[root@vps ~]# kill grep node
-bash: kill: grep: arguments must be process or job IDs
-bash: kill: node: arguments must be process or job IDs
[root@vps ~]# ps grep node
ERROR: Process ID list syntax error.
[root@vps ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  10372   640 ?        Ss   Apr04   0:01 init [3]      
root         2  0.0  0.0      0     0 ?        S    Apr04   0:00 [kthreadd/141]
root         3  0.0  0.0      0     0 ?        S    Apr04   0:00 [khelper/141]
root       100  0.0  0.0  12640   384 ?        S<s  Apr04   0:00 /sbin/udevd -d
root       477  0.0  0.0   5932   612 ?        Ds   Apr04   1:13 syslogd -m 0
root       488  0.0  0.0  62688   740 ?        Ss   Apr04   0:00 /usr/sbin/sshd
root       496  0.0  0.0  21664   596 ?        Ss   Apr04   0:00 xinetd -stayali
root       542  0.0  0.0  19728  1168 ?        Ss   Apr04   0:00 crond
root       550  0.0  0.0  48860  1276 ?        Ss   Apr04   0:00 /usr/sbin/sasla
root       552  0.0  0.0  48860  1264 ?        S    Apr04   0:00 /usr/sbin/sasla
root      2348  0.0  0.1  60300  2592 ?        Ss   Apr04   0:00 /usr/libexec/po
postfix   2351  0.0  0.1  60432  2512 ?        S    Apr04   0:00 qmgr -l -t fifo
mailman   3170  0.0  0.3  94488  7948 ?        Ss   Apr04   0:00 /usr/bin/python
mailman   3172  0.0  0.5  96664 10544 ?        S    Apr04   0:22 /usr/bin/python
mailman   3173  0.0  0.5  96648 10588 ?        S    Apr04   0:23 /usr/bin/python
mailman   3174  0.0  0.5  96672 10564 ?        S    Apr04   0:22 /usr/bin/python
mailman   3175  0.0  0.5  96668 10540 ?        S    Apr04   0:22 /usr/bin/python
mailman   3176  0.0  0.5  96620 10600 ?        S    Apr04   0:22 /usr/bin/python
mailman   3177  0.0  0.5  96820 10804 ?        S    Apr04   0:24 /usr/bin/python
mailman   3178  0.0  0.5  96668 10692 ?        S    Apr04   0:22 /usr/bin/python
mailman   3179  0.0  0.5  96668 10552 ?        S    Apr04   0:00 /usr/bin/python
nobody    3934  0.0  9.2 251908 194992 ?       Ssl  Apr04   0:58 clamd.virtualmi
root      4209  0.0  0.0  10784  1304 ?        S    Apr04   0:00 /bin/sh /usr/bi
mysql     4291  0.0  4.4 610420 93176 ?        Sl   Apr04   0:40 /usr/libexec/my
root      4556  0.0  2.9 132268 61100 ?        Ss   Apr04   0:07 /usr/bin/perl /
root      4618  0.0  2.4  83428 51644 ?        Ss   Apr04   0:00 /usr/libexec/we
nobody    5017  0.0  0.1  51936  2412 ?        Ss   Apr04   0:02 proftpd: (accep
named     5309  0.0  0.2 154864  4780 ?        Ssl  Apr04   3:48 /usr/sbin/named
root      8985  0.0  0.1  86084  3396 ?        Ss   09:24   0:00 sshd: root@pts/
root      8987  0.0  0.0  12088  1704 pts/0    Ss   09:24   0:00 -bash
apache   12463  0.0  0.5 254352 11248 ?        S    01:29   0:00 /usr/sbin/httpd
apache   12464  0.0  0.7 337608 15328 ?        S    01:29   0:00 /usr/sbin/httpd
apache   12909  0.0  0.7 337596 15652 ?        S    01:47   0:00 /usr/sbin/httpd
apache   14474  0.0  0.7 337592 15344 ?        S    02:57   0:00 /usr/sbin/httpd
postfix  15616  0.0  0.1  60372  2540 ?        S    14:19   0:00 pickup -l -t fi
root     16609  0.0  0.0  44856  1476 ?        S    15:00   0:00 crond
root     16612  0.0  0.0   8688  1172 ?        Ss   15:00   0:00 /bin/bash /usr/
root     16615  0.0  0.0   3812   484 ?        S    15:00   0:00 sleep 9732
root     21104  0.0  0.1  84768  3220 ?        Ss   15:58   0:00 sshd: unknown [
sshd     21105  0.0  0.0  64032  1564 ?        S    15:58   0:00 sshd: unknown [
root     21106  0.0  0.0  10744  1008 pts/0    R+   15:58   0:00 ps aux
root     31970  0.0  1.1 337448 23804 ?        Ss   Apr04   0:04 /usr/sbin/httpd
[root@vps ~]# ps aux node
ERROR: Unknown user-defined format specifier "de".
[root@vps ~]# ps aux | node
[stdin]:1
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND        ^^^
SyntaxError: Unexpected identifier
    at Object.<anonymous> ([stdin]-wrapper:6:22)
    at Module._compile (module.js:456:26)
    at evalScript (node.js:532:25)
    at Socket.<anonymous> (node.js:154:11)
    at Socket.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:883:14
    at process._tickCallback (node.js:415:13)
[root@vps ~]# ps aux | g
-bash: g: command not found
[root@vps ~]# ps aux | r
-bash: r: command not found
[root@vps ~]# ps aux | r node
-bash: r: command not found
[root@vps ~]# ps auxr
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       477  0.0  0.0   5932   612 ?        Ds   Apr04   1:13 syslogd -m 0
root     21529  0.0  0.0  10744  1008 pts/0    R+   16:03   0:00 ps auxr
[root@vps ~]# ps aur
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     21755  0.0  0.0  10740   944 pts/0    R+   16:06   0:00 ps aur
[root@vps ~]# ps G
ERROR: Unsupported option (BSD syntax)
[root@vps ~]# ps -G
ERROR: List of real groups must follow -G.
[root@vps ~]# ps -G node
ERROR: Group name does not exist.
[root@vps ~]# kill app
-bash: kill: app: arguments must be process or job IDs
[root@vps ~]# kill app.js
-bash: kill: app.js: arguments must be process or job IDs
[root@vps ~]# ps grep node
ERROR: Process ID list syntax error.
[root@vps ~]# ps | grep node
[root@vps ~]# ps a | grep node
22021 pts/0    S+     0:00 grep node
[root@vps ~]# ps -p | grep node
ERROR: List of process IDs must follow -p.
[root@vps ~]# ps r | grep node
[root@vps ~]# ps t
  PID TTY      STAT   TIME COMMAND
 8987 pts/0    Ss     0:00 -bash
22241 pts/0    R+     0:00 ps t
[root@vps ~]# ps t | grep node
22265 pts/0    S+     0:00 grep node
[root@vps ~]# kill 22265
-bash: kill: (22265) - No such process
[root@vps ~]# kill ps | grep node
-bash: kill: ps: arguments must be process or job IDs
[root@vps ~]# ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0  8987  8985  20   0  12088  1708 wait   Ss   pts/0      0:00 -bash
4     0 22545  8987  20   0   8652   896 -      R+   pts/0      0:00 ps l
[root@vps ~]# ps l | grep node
0     0 22589  8987  20   0   7216   808 pipe_w S+   pts/0      0:00 grep node
[root@vps ~]# kill -22545 PID
-bash: kill: 22545: invalid signal specification
[root@vps ~]# ps r | grep node
[root@vps ~]# ps -r | grep node
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
[root@vps ~]# ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0  8987  8985  20   0  12088  1708 wait   Ss   pts/0      0:00 -bash
4     0 22718  8987  20   0   8652   900 -      R+   pts/0      0:00 ps l
[root@vps ~]# ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0  8987  8985  20   0  12088  1708 wait   Ss   pts/0      0:00 -bash
4     0 22743  8987  20   0   8652   900 -      R+   pts/0      0:00 ps l
[root@vps ~]# kill 8987 PPID
-bash: kill: PPID: arguments must be process or job IDs
[root@vps ~]# ps pl
ERROR: Process ID list syntax error.
[root@vps ~]# ps p
ERROR: List of process IDs must follow p.
[root@vps ~]# ps f
  PID TTY      STAT   TIME COMMAND
 8987 pts/0    Ss     0:00 -bash
22935 pts/0    R+     0:00  \_ ps f
[root@vps ~]# ps j
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
 8985  8987  8987  8987 pts/0    23076 Ss       0   0:00 -bash
 8987 23076 23076  8987 pts/0    23076 R+       0   0:00 ps j
[root@vps ~]# 

I don't understand PID seems to change each time

I recommend that you create an Upstart script for your node app. If you do that, you can control the lifecycle of your application by issuing start, stop and restart commands. That way, you can also set up your app to start when your server boots, and you can also respawn your application if it terminates unexpectedly. There are plenty of examples of upstart scripts for nodejs, so it's only a matter of adapting an example to fit your environment.