I have SQL Agent running under a local user account. Jobs runs well if I used Local account credentials for the cmdExec step. If I try to use a domain user account (created previously in proxies account) the job start and "hang" (still running but nothing is done) and I got an event id 10016 in the System section of Event Viewer.
Is it a normal behavior ? Does I have to start the SQL Agent services with a Domain user account ? Does the local user account will continue to work ?
Yes. Unfortunately, your local account doesn't have the credentials to look up domain users, so it can't tell whether your domain account is authorized or not. You'll have to use a domain user account.
Is it a normal behavior
It could be, depends on what your task is.
Do I have to restart the SQL Agent service after changing to a domain user account?
Yes. After changing the user account for any service you have to restart. It will not run under the context of the new account until you do so.
Does the local user account continue to work
If I'm understanding this question right you're asking if the local user account will continue to be used after switching the service to a domain user. If so, then no.
You don't have to switch the SQL Agent service over to a domain user if you have the proper SQL Agent credential and proxy set and you've configured your job step to use that proxy. The account in the credential that the proxy is using does need to have the proper permissions at the OS level for anything that job step is trying to do, though. This is where I think things are falling down for you.
You'll need to post more information for us to help you on why it's hanging. Include things like what the step is doing (running a script/batch file, copying files, etc) and what specific errors you get not only in event viewer but also from the SQL log.